A modern full-stack project management application built with TypeScript, featuring a NestJS GraphQL backend and React frontend with real-time collaboration capabilities.
- Framework: NestJS (Node.js framework)
- API: GraphQL with Apollo Server
- Database: PostgreSQL with Prisma ORM
- Authentication: JWT with Passport and bcrypt
- Language: TypeScript
- Testing: Jest
- Framework: React 19 with TypeScript
- Build Tool: Vite
- Styling: Vanilla CSS (Premium Aesthetics) & TailwindCSS
- State Management: React Context & Zustand
- GraphQL Client: Apollo Client
- Routing: React Router DOM (with protected routes)
- Advanced ACL System: Granular project-level roles (Owner, Admin, Member, Viewer) with inherited permissions.
- Global RBAC: System-wide roles (Admin, Manager, User) protecting administrative dashboards.
- Dynamic Dashboard: Real-time aggregate statistics for users, projects, and tasks.
- User Registration: Seamless signup flow with automatic authentication.
- Task Management: Kanban-style boards with drag-and-drop (permission-aware).
- Collaboration: Nested commenting system and multi-level attachments.
- Time Tracking: Log and manage time spent across entities.
- Node.js (v18 or higher)
- npm or yarn
- Git
- Clone the repository
git clone <repository-url>
cd full-stack-typescript- Install root dependencies
npm install- Backend Setup
cd backend
npm install
# Generate Prisma client
npx prisma generate
# Run database migrations
npx prisma migrate dev
# Start the backend server (development mode)
npm run start:dev- Frontend Setup
cd frontend
npm install
# Start the frontend development server
npm run devThe application uses PostgreSQL with Prisma ORM. Ensure you have a running PostgreSQL instance and configure your .env file with the correct DATABASE_URL.
# Navigate to backend directory
cd backend
# Generate Prisma client
npx prisma generate
# Apply migrations
npx prisma migrate dev
# (Optional) Seed the database with sample data
npx prisma db seed- Start Backend (Terminal 1)
cd backend
npm run start:devBackend will be available at: http://localhost:3000
GraphQL Playground: http://localhost:3000/graphql
- Start Frontend (Terminal 2)
cd frontend
npm run devFrontend will be available at: http://localhost:5173
- Build and start backend
cd backend
npm run build
npm run start:prod- Build and preview frontend
cd frontend
npm run build
npm run previewfull-stack-typescript/
βββ backend/ # NestJS GraphQL API
β βββ src/
β β βββ user/ # User management module
β β βββ project/ # Project management module
β β βββ task/ # Task management module
β β βββ timesheet/ # Time tracking module
β β βββ comment/ # Comments system module
β β βββ project-member/ # ACL & Membership module
β β βββ dashboard/ # Statistics & Aggregates module
β β βββ prisma/ # Database service
β βββ prisma/
β β βββ schema.prisma # Database schema
β β βββ migrations/ # Database migrations
β βββ dev.db # SQLite database
βββ frontend/ # React application
β βββ src/
β β βββ components/ # Reusable UI components
β β βββ features/ # Feature-based modules
β β β βββ projects/ # Project management
β β β βββ tasks/ # Task management
β β β βββ users/ # User management
β β βββ context/ # React context providers
β β βββ hooks/ # Custom React hooks
β β βββ types/ # TypeScript type definitions
β βββ public/ # Static assets
βββ README.md
npm run start:dev # Start development server with hot reload
npm run start:debug # Start with debugging enabled
npm run build # Build for production
npm run start:prod # Start production server
npm run test # Run unit tests
npm run test:e2e # Run end-to-end tests
npm run lint # Run ESLint
npm run format # Format code with Prettiernpm run dev # Start development server
npm run build # Build for production
npm run preview # Preview production build
npm run lint # Run ESLint
npm run format # Format code with PrettierThe application includes the following main entities:
- User: User accounts with roles (Admin, Manager, User)
- Project: Projects with status tracking
- Task: Tasks assigned to users and projects
- Timesheet: Time tracking entries
- Comment: Collaborative commenting system
- Password hashing with bcrypt
- Role-based access control (Admin, Manager, User)
- JWT tokens for session management
- Protected routes and API endpoints
# Backend tests
cd backend
npm run test # Unit tests
npm run test:e2e # End-to-end tests
npm run test:cov # Coverage report
# Frontend tests
cd frontend
npm run test # Component testsThe GraphQL API is automatically documented and available at:
- Development:
http://localhost:3000/graphql - GraphQL Playground: Interactive API explorer
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
-
Database connection issues
- Ensure SQLite database file exists
- Run
npx prisma migrate devto apply migrations
-
GraphQL connection issues
- Verify backend is running on port 3000
- Check CORS settings in
main.ts
-
Frontend build issues
- Clear node_modules and reinstall:
rm -rf node_modules && npm install - Check TypeScript configuration
- Clear node_modules and reinstall:
- Check the Issues page
- Review the GraphQL Playground for API documentation
- Ensure all dependencies are properly installed
Happy Coding! π