- TypeScript 96.2%
- Nix 2.7%
- Dockerfile 0.6%
- Shell 0.5%
Tulipnote API
Backend for the Tulipnote journaling service. It is recommended to read the full readme for information regarding installation, contributing, etc.
Quickstart
Clone the repository, navigate to it, then (assuming you have docker and docker-compose installed and ready), run docker compose up and access the api at http://localhost:8888. Documentation available at the /swagger endpoint.
Be sure to make note of the access code to create the initial user.
Dev Instance
The API can be started for development purposes with following steps:
- Clone the repository and navigate to the directory.
- Install Bun if you haven't already. If you have the Nix package manager with flakes and nix-command enabled, you can start a development environment by running
nix develop. - Using either .env or shell variables, create a variable called DB to specify the Sqlite file. You do not need to create the file as Drizzle will do that for you.
- Start the server by running
./dev-start.sh. The default port is 3000, but can be changed with the PORT environment variable. Documentation is available athttp://localhost:3000/swagger. - Make sure to note the printed Access Code as you'll need it to create the initial user. See the documentation for more information.
Contributing
Use Conventional Commits in your fork. For smaller issues/bugs, PRs can be made, but it is advisable to create issues for larger features.
Additional Info
The default rate limiting is 6 requests every 5 seconds which applies globally. This can adjusted with the RL_SECONDS and RL_MAX env variables to adjust seconds pool and max requests per seconds pool, respectively.
If Docker gives any sort of error regarding missing directory, create a folder called data in the root of the project folder.
To contact me directly for any reason including things like security concerns, I have various points of contact on my site at https://me.drizzly.cloud and you can email me at rainy@drizzly.cloud.
Written in Typescript with ❤️