A clean, full-stack task manager app with Pomodoro integration. Built from scratch to defeat tutorial hell and embrace real-world development.
Toki isnβt just another task manager β itβs the first app Iβve fully built on my own, from UI to backend logic. After months of tutorials, I wanted to break free and build something real, something I could iterate on, refine, and deploy. Thatβs how Toki was born.
- Create, update, delete tasks
- Set priority levels (high/low)
- Filter by priority
- Sort by:
- Recent updates
- Due date
- Estimated time
- Progress (based on Pomodoro sessions)
- Toggle between Board View (card layout) and List View (rows)
- Focus, Short Break, Long Break sessions
- Auto-starts Breaks after focus ends
- Manual-start for Focus (ensures user is ready to work)
- Tracks focus sessions per task
- Set your own Pomodoro durations
- Customize session colors (Focus, Breaks)
- Change password and set a fun username
- JWT-based login/register
- Auto-removal of expired tokens via Axios interceptor
- Redirection to login + toast when session expires
- Fully responsive (desktop & mobile)
- Clean, intuitive interface
- Animated icons & tooltips for better guidance
Each task generates a unique motivational quote based on:
- Estimated time
- Time left before deadline
- Sessions completed
Itβs a tiny system that nudges you to break it down, focus, and win.
Try Toki in action:
Toki is fully Dockerized with production-ready builds for both the frontend and backend.
You can spin up both with:
docker compose up --buildThis runs:
- A React + Vite frontend
- A Spring Boot backend, connected to a cloud-hosted PostgreSQL database
If you'd like to run everything 100% locally, including the backend and database:
-
Uncomment the db service inside docker-compose.yml.
-
Create your local .env file:
# FRONTEND VITE_BACKEND_URL=http://localhost:8080 # BACKEND SPRING_DATASOURCE_URL=jdbc:postgresql://db:5432/tokidb SPRING_DATASOURCE_USERNAME=postgres SPRING_DATASOURCE_PASSWORD=tokipass JWT_SECRET=some-random-long-secret
-
Expose the right port in your frontend Dockerfile:
EXPOSE 3000 CMD ["npx", "serve", "-l", "3000", "dist"]
| Login | Register |
|---|---|
![]() |
![]() |
| Dashboard β Board View | Dashboard β List View |
|---|---|
![]() |
![]() |
-
Sort & Filter:
Sorting Filtering 

-
Add / Edit Tasks:
Add Task Edit Task 

-
Empty State:
When no tasks are found, Toki welcomes you with a sad tomato π

| Focus | Short Break | Long Break |
|---|---|---|
![]() |
![]() |
![]() |
Sessions auto-switch from Focus β Break, and wait for manual confirmation before Focus restarts.
| Durations / Theme | Profile Tab (Username & Password) |
|---|---|
![]() |
![]() |
| Dashboard | Pomodoro |
|---|---|
![]() |
![]() |
- React + TypeScript
- TailwindCSS
- Axios
- Vite
- Spring Boot
- Spring Security (JWT)
- PostgreSQL / H2
- RESTful APIs
frontend/src
βββ App.tsx # Main app entry
βββ assets/images # Logos, illustrations, mascot
βββ components/ # Layout, Navbar, Toasts, Floating Add Btn
βββ features/
β βββ auth # Login/Register forms + pages
β βββ pomodoro # Timer logic and UI
β βββ settings # Theme, duration, profile
β βββ tasks # Task views, forms, filters
βββ hooks/ # useTasks, useOverflow (for UI)
βββ services/ # API abstraction layer
βββ routes/ # Client-side routing
βββ types/ # Shared types
backend/src/main/java/com/taskmanager/taskmanager
βββ entity/ # Task, User, UserSettings
βββ repository/ # Data access layers
βββ service/ # Business logic (Task, User, Settings)
βββ security/ # JWT config, filter, controller
βββ web/ # REST controllers
βββ ApplicationExceptionHandler.java
Hey! I'm Alae, a first-year software engineering student from Morocco π²π¦.
Toki is the first real app Iβve built after escaping tutorial hell β a full-stack project that challenged me to understand architecture, flow, and deployment from scratch.
My dream? To work or intern in Japan and grow through purposeful development.
This project is not licensed. Itβs a personal learning milestone.
Built with grit, vision, and a tomato. π











