Web-based Website URL Collection app
Colly is a web-based application designed for effortlessly collecting and organizing your favorite URL's and websites. With Colly, users can create a personalized library of web pages.
One of Colly's features is its tagging system, which allows users to categorize and organize their collections with ease. Whether it's articles, blogs, tutorials, or any other web content, users can assign relevant tags to each link, enabling efficient retrieval and navigation within their collections.
The collection of a user can also be set as public and accessed using a public access link by anyone who has the link.
Whether you're a student, professional, or simply someone who loves to explore the web, Colly empowers users to create curated collections tailored to their unique preferences and interests. Say goodbye to scattered bookmarks and hello to a more organized, accessible, and enjoyable web browsing experience with Colly.
The recommended way to deploy Colly is using Docker. There is a ready-to-use example Docker Compose file available in this repository.
With Docker installed, you can use the following commands to clone the repository and run Toohga using Docker Compose.
First, clone the repository.
git clone https://github.com/jarne/colly.git
cd collyThen copy the .env file template for Docker and replace the secret values in this file.
cp .env.docker.example .envStart the services using Docker Compose.
sudo docker compose upAlternative deployment methods are to use the Docker image or deploy the Node.js application directly on the operating system.
When deploying without the Docker file, keep in mind to install Node.js and required dependencies using pnpm:
pnpm install
cd client
pnpm install
pnpm run build
The following environment variables need be set:
| Env variable | Default Value | Description |
|---|---|---|
NODE_ENV |
development |
Set to deployment environment (production or development) |
MONGO_HOST |
Hostname of MongoDB | |
MONGO_PORT |
27017 |
Port of MongoDB |
MONGO_DB |
MongoDB database name | |
JWT_SECRET |
Random secret for JWT | |
S3_ENDPOINT |
Hostname for S3-compatible endpoint for image storage | |
S3_REGION |
S3 region to use | |
S3_ACCESS_KEY |
Access key ID for S3 endpoint | |
S3_ACCESS_SECRET |
Secret access key for S3 endpoint | |
S3_BUCKET |
Name of the S3 bucket | |
S3_FORCE_PATH_STYLE |
false |
Force path style URLs for S3 objects |
In addition, the following optional environment variables can be set:
| Env variable | Default Value | Description |
|---|---|---|
EXPIRES_IN_SEC |
86400 |
Expiration of JWT (in seconds) |
INITIAL_ADMIN_USERNAME |
Create initial admin user with this username | |
INITIAL_ADMIN_PASSWORD |
Password for initial admin user | |
LOG_LEVEL |
info |
Log level of the app |
LOKI_HOST |
Hostname for Grafana Loki to send logs to | |
LOKI_BASIC_AUTH |
Authentication credentials (basic auth format) for Grafana Loki | |
USE_HTTPS |
true |
Set if HTTPS should enforced for session cookies (only disable in development) |
Colly is based on a back-end and front-end part.
The back-end of the application inside the main folder is written in JavaScript using Node.js and the Express framework. As dependencies, a MongoDB database for storing the data and an S3-compatible object storage, such as RustFS, for storing image meta data such as website icons and banners, are required.
Using the following command, the back-end can be started for development: pnpm run dev
Unit tests inside the test folder are using Mocha and Chai. The following checks should be run before commiting code to execute unit tests, ESLint and format the code according to the defined code style:
pnpm run test
pnpm run lint
pnpm run formatThere are several tool scripts and a test dataset for development and testing, placed in the test-data folder.
Create first user: pnpm run init:user
Run web server to serve test websites: pnpm run dev:test-data
Insert test data into database: pnpm run test:insert-test-data
The front-end inside the client folder is written in JavaScript and is based on React, Vite and Bootstrap for styles.
Run development server: pnpm run dev
Create build: pnpm run build
Run ESLint: pnpm run lint
Code style formatting is configured in the parent folder, so if you run pnpm run format in the main folder,
it will format both the back-end and front-end.
Contributions are always very welcome! It's completely equal if you're a beginner or a more experienced developer.
Thanks for your interest ππ!



