Completely free and fully open source link-in-bio tool. Like other link-in-bio tools, but everything is free and open source, cause nobody is paying to display 5 links on a website.
Warning
This project is still under heavy development. Use in production at your own risk.
Contributions are always welcome!
See CONTRIBUTING.md to get started.
Don't forget to follow the Code of Conduct
This is a Django Rest Framework and Vite project.
If you have Nix installed with flakes enabled, this is the easiest way to get started:
- Clone the repository and
cdinto it - Allow direnv (if you use it):
direnv allow- Or manually enter the shell:
nix develop --impure
- Or manually enter the shell:
- Set up your environment files:
cp backend/.env.example backend/.env cp web/.env.example web/.env
- Install dependencies:
cd backend && uv sync && cd .. cd web && bun install && cd ..
- Start all services:
pc-up
This will automatically start PostgreSQL, run database initialization, and launch both the backend and frontend servers.
Available commands:
pc-up- Start all services (PostgreSQL, Django, Vite)pc-down- Stop all servicesdb-psql- Connect to the databasedb-reset- Drop and recreate the database
If you're not using Nix, you can set up the project manually:
Using uv is recommended for this project.
- After pulling the project, head over to the
/backend/directory, and runuv sync. This will initialize a virtual environment for the backend and install the dependencies. - Create a PostgreSQL database locally for freetree.
- Fill out the
.envaccording to the.env.examplefile, the.envshould be located at the same place and level as the example one. - Migrate the tables by running
python manage.py migrate. - Make sure pre commit hooks are installed by running
pre-commit install. - Start the backend service with
python manage.py runserver.
Using bun is recommended for this project.
- After pulling the project, head over to the
webdirectory and runbun install. This will install all dependencies for the project. - Fill out the
.envaccording to the.env.examplefile, the.envshould be located at the same place and level as the example one. - Start the frontend service with
bun dev.
After running the project, you can navigate to /admin on the backend for the Django admin panel with all registered models.
You might need to have a superuser for this, you can create one using python manage.py createsuperuser.
You can also navigate to /api/docs on the backend for the automatically generated Swagger UI.
