A full-stack task management application built with React, TypeScript, and Bun. This application provides a modern interface for managing tasks with user authentication, role-based access control, and file attachment capabilities.
- User Registration & Authentication: Secure user registration and login system with JWT-based authentication
- Role-Based Access Control (RBAC): Support for admin and user roles with different permission levels
- User Profile Management: View and manage user profiles
- Create & Manage Tasks: Create, update, and organize tasks with rich details
- Task Status Tracking: Track tasks with statuses:
late,done,progress - Priority Levels: Assign priority to tasks:
low,medium,high,urgent - Due Date Management: Set and track task deadlines
- File Attachments: Attach PDF documents to tasks
- Task Assignment: Assign tasks to multiple users
- Pagination Support: Efficiently browse through large task lists
- PDF Upload: Upload PDF files with validation
- File Storage: Secure file storage system
- File Listing: View all uploaded files
This is a monorepo containing two main applications:
panscience-innovation/
βββ client/ # React frontend application
βββ server/ # Bun/Express backend API
βββ README.md # This file
- Framework: React 19 with TypeScript
- Build Tool: Vite (with Rolldown)
- State Management: Redux Toolkit
- Routing: React Router v7
- Styling: SCSS modules
- UI Features:
- React Compiler for optimized rendering
- Hot Module Replacement (HMR)
- SVG icon system with dynamic generation
- Toast notifications
- Runtime: Bun
- Framework: Express.js
- Database: PostgreSQL with Prisma ORM
- Authentication: JWT tokens
- File Upload: Multer
- Security: Helmet, CORS
- Logging: Winston with daily rotation
- Password Hashing: bcrypt
- Node.js (v18 or higher) or Bun (v1.2.14 or higher)
- PostgreSQL (v17 or higher)
- Git
git clone https://github.com/shakshipatel/panscience-innovation.git
cd panscience-innovationcd server
# Install dependencies
bun install
# Configure environment variables
cp .env.example .env
# Edit .env with your database credentials
# Run database migrations
bunx prisma migrate deploy
bunx prisma generate
# Start development server
bun run devThe server will run on http://localhost:3000
If testing on postman, use this as base url http://localhost:3000/v1
cd client
# Install dependencies
bun install
# Start development server
bun run devThe client will run on http://localhost:5173
The application can be deployed using Docker Compose:
cd server
# Start all services (app + database)
docker-compose up -d
# View logs
docker-compose logs -f
# Stop services
docker-compose downThis will start:
- Backend API on port 3000
- PostgreSQL database on port 5432
POST /v1/user/register # Register new user
POST /v1/user/login # User login
GET /v1/user/me # Get current user (requires auth)
GET /v1/user/all # Get all users (requires auth)
POST /v1/task # Create task (requires auth)
GET /v1/task/:id # Get task by ID (requires auth)
GET /v1/task # Get all tasks (requires auth)
POST /v1/task/page # Get paginated tasks (requires auth)
PUT /v1/task # Update task (requires auth)
POST /v1/upload # Upload PDF file
GET /v1/files # List all uploaded files
id: UUID (Primary Key)name: Stringemail: String (Unique)password: String (Hashed)role: Enum (admin, user)createdAt: DateTimeupdatedAt: DateTime
id: UUID (Primary Key)title: Stringdescription: String (Optional)status: Enum (late, done, progress)priority: Enum (low, medium, high, urgent)dueDate: DateTime (Optional)attachedDocuments: String[]users: User[] (Many-to-many relation)createdAt: DateTimeupdatedAt: DateTime
To explore the application with admin privileges, use the following test account:
Email: panscience@gmail.com
Password: admin@panscience
Role: adminclient/src/
βββ api/ # API integration hooks
βββ assets/ # Static assets
βββ components/ # Reusable UI components
βββ constants/ # App constants and enums
βββ hooks/ # Custom React hooks
βββ icons/ # SVG icon system
β βββ assets/ # SVG files
β βββ scripts/ # Icon generation scripts
βββ lib/ # Utility libraries
βββ pages/ # Page components
β βββ Login/
β βββ Register/
β βββ Tasks/
βββ rbac/ # Role-based access control
βββ store/ # Redux store configuration
βββ types/ # TypeScript type definitions
bun run dev # Start development server with hot reload
bun run prod # Start production server
bun run build # Build and prepare for production
bun run buildProd # Build production bundle
bunx prisma format # Format Prisma schemabun run dev # Start development server
bun run build # Build for production
bun run preview # Preview production build
bun run lint # Run ESLint
bun run gi # Generate icon componentsThe client includes a custom SVG icon system:
- Add SVG files to
client/src/icons/assets/ - Run
bun run gito generate icon components - Import and use:
import { IconName } from '@/icons'
- JWT-based authentication
- Password hashing with bcrypt
- CORS protection
- Helmet security headers
- File type validation for uploads
- Environment-based configuration
The client is configured for Vercel deployment with a vercel.json configuration file.
Use the provided Dockerfile and docker-compose.yml for containerized deployment.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is open source and available under the MIT License.