Chronos is a planning service that helps you manage tasks, set reminders and organize arrangements across multiple calendars.
The application was developed as a solution to the chronos challenge of Track Full Stack, the last stage of the Innovation Campus educational program. Our team had 5 weeks (November-December 2025) to design and implement the solution.
- automatically created default calendar for each user and a calendar with the national holidays in the user's country
- ability to create, update, delete, archive calendars, invite other users to them by email, search and follow public calendars (admin access for an author of the calendar)
- ability to create, update, delete events of different types (arrangement, reminder, task, holiday, birthday) in own calendars and calendars you were invited to by email (admin access for an author of the event and an author of the calendar)
- ability to create, update, delete tags for events
- ability to search events, filter visible events by calendars, types, tags and view them in month, week, day representations
Additionally:
- pleasant and responsive design with satisfying colors, helpful icons and many custom components
- friendly authentication (registration, login, password reset, email confirmation)
- profile management (updating login, avatar, full name, email, password and date of birth that can be easily added to the calendars)
All you need preinstalled is the Docker Desktop.
npm packages:
- axios
- bcryptjs
- express, express-validator
- jsonwebtoken
- mongoose
- multer
- nodemailer
Other packages:
- axios
- date-fns
- react-datepicker
- react-toastify
- validator
- Public Holiday Api - Nager.Date
- IP Data Api - IPinfo
Clone the repository to your local machine and navigate to the project directory:
git clone https://github.com/VeronikaSukhonos/chronos.git
cd chronosCreate .env file with variables specified in .env.example file.
To get IP_API_KEY, register here.
Launch the Docker Desktop, and, in the same directory where docker-compose.yml file is located, run the command:
docker compose build <app-dev/app-prod>
Write app-dev to run the development build, and app-prod to run the production build.
In the development build, you can change files both in backend and frontend directories (except Docker-related files like Dockerfile), and servers will be restarted automatically.
To run the app, use the following command:
docker compose up <app-dev/app-prod>
You can run this command without
docker compose build- the app will be built first (if not yet) and then automatically launched.
API server will run at:
http://localhost:8080in the development buildhttp://localhost:8888in the production build
Web application will run at:
http://localhost:5173in the development buildhttp://localhost:8000in the production build
If you want to see some container's logs, in the Docker Desktop, click on the corresponding container and open Logs tab.
When you are done, tear the app down by using the command:
docker compose down
Project documentation can be found here and contains:
- description of our experience (activities, findings, problems, conclusions) while working on a project according to Challenge Based Learning (CBL) framework
- description of all API endpoints
- screenshots of all features


