Your knight in project management
A modern, full-stack Project Management Office application built with Next.js, Rust, and PostgreSQL.
- Project Management — Create, update, and track projects with timelines and budgets
- Task Management — Assign tasks, track progress, set priorities and due dates
- Team & Resources — Manage teams, assign members, track resource allocation
- Dashboard & Reports — Visual analytics, progress charts, and reporting
- Authentication — Secure user registration and login system
| Layer | Technology |
|---|---|
| Frontend | Next.js 16 + TypeScript + Tailwind CSS |
| Backend | Rust + Axum |
| Database | PostgreSQL |
| DevOps | Docker + Docker Compose |
percival/
├── frontend/ # Next.js TypeScript frontend
├── backend/ # Rust Axum API server
├── database/ # PostgreSQL schema and migrations
└── docs/ # Documentation
# Clone the repository
git clone https://github.com/bimakw/percival.git
cd percival
# Build and run all services
docker compose up -d
# Or use make
make build
make run| Service | URL |
|---|---|
| Frontend | http://localhost:3000 |
| Backend API | http://localhost:8080 |
| PostgreSQL | localhost:5432 |
- Node.js 18+
- Rust 1.75+
- Docker & Docker Compose
# Start database only
make dev-db
# Run backend (in separate terminal)
make dev-backend
# Run frontend (in separate terminal)
make dev-frontend# Create database
createdb percival_db
# Run schema
psql -d percival_db -f database/schema.sql
# Load seed data (optional)
psql -d percival_db -f database/seed.sql| Method | Endpoint | Description |
|---|---|---|
| POST | /api/v1/auth/register |
Register new user |
| POST | /api/v1/auth/login |
Login |
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/v1/projects |
List all projects |
| POST | /api/v1/projects |
Create project |
| GET | /api/v1/projects/{id} |
Get project details |
| PUT | /api/v1/projects/{id} |
Update project |
| DELETE | /api/v1/projects/{id} |
Delete project |
| GET | /api/v1/projects/{id}/tasks |
Get project tasks |
| GET | /api/v1/projects/{id}/milestones |
Get project milestones |
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/v1/tasks |
List all tasks |
| POST | /api/v1/tasks |
Create task |
| GET | /api/v1/tasks/{id} |
Get task details |
| PUT | /api/v1/tasks/{id} |
Update task |
| DELETE | /api/v1/tasks/{id} |
Delete task |
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/v1/teams |
List all teams |
| POST | /api/v1/teams |
Create team |
| GET | /api/v1/teams/{id} |
Get team details |
| PUT | /api/v1/teams/{id} |
Update team |
| DELETE | /api/v1/teams/{id} |
Delete team |
| GET | /api/v1/teams/{id}/members |
Get team members |
| POST | /api/v1/teams/{id}/members |
Add team member |
| Table | Description |
|---|---|
users |
User accounts with roles (admin, manager, member) |
teams |
Team groups |
team_members |
Team membership |
projects |
Project details with status and budget |
project_members |
Project membership |
milestones |
Project milestones |
tasks |
Task items with assignments |
task_comments |
Task comments/discussions |
activity_logs |
Audit trail |
cd backend
cargo test| Module | Tests |
|---|---|
| Email validation | 16 |
| Auth service (password hashing) | 12 |
| Domain enums | 30 |
| Password validation | 6 |
cd frontend
npm run test:run| Module | Tests |
|---|---|
| Utility functions | 37 |
| Auth store | 17 |
This project is licensed under the MIT License - see the LICENSE file for details.
Made with ☕ by bimakw