This project was created as a training project within the framework of the university discipline of "Information Systems Design".
The project is largely inspired by PasteBin. The following features were implemented during development:
-
Several storage modes - in PasteBin you can create a note with 3 storage modes (“Burn after read”, “Burn by period”, “Never”). The most interesting is the first one. It allows you to read the note only once (even with simultaneous requests, the note will be issued only to one). NoteBin supports it. This feature is implemented through Redis transactions and optimistic locking;
-
Notes Caching - сache the most frequently requested data using Redis;
-
Unique short URL - we give the user short and unique URL. The URL is provided instantly, our user does not wait for it to be generated. For this, 2 types of pools of free (pre-generated) URLs are used: local and global. Pools are replenished in asynchronous mode when “starvation” is detected;
-
Acount system - system allows registered accounts through which you can view and edit previously created notes. User authentication is performed on the basis of a JWT with 2 types of tokens: refresh and access;
-
Analytics - collecting information on views of notes. Statistics on the number of non/unique views are available.
To simplify the process of running the project, we use docker-compose
. Follow these steps to get started:
- Build the Docker images (if not already built):
docker-compose build
- Start the containers:
docker-compose up