A full-stack productivity application that transforms boring task management into an engaging gamified experience. Built with modern technologies and production-ready architecture.
- XP Rewards: Complete tasks to earn experience points
- Level Progression: Automatic level ups at XP milestones
- Badge System: Achievement unlocks and recognition
- Streak Tracking: Daily consistency rewards
- Rewards Shop: Spend XP on digital rewards
- Goal Setting: Create and track personal goals
- Habit Formation: Daily/weekly habit tracking
- Progress Visualization: Analytics and statistics
- Smart Reminders: Automated notification system
- Milestone Tracking: Goal subdivision support
- Progress Charts: Weekly activity visualization
- Consistency Scoring: Habit adherence tracking
- Skill Tree: Multi-dimensional progress tracking
- Streak Analytics: Historical streak comparisons
- Personal Insights: Data-driven improvement tips
- TypeScript: Full type safety and development experience
- Unit Tests: Comprehensive test coverage (Jest/Vitest)
- API Documentation: OpenAPI/Swagger specifications
- Security: JWT authentication, bcrypt password hashing
- Performance: Optimized queries and caching strategies
- Framework: Node.js + Express
- Language: TypeScript
- Database: MongoDB + Mongoose
- Authentication: JWT + bcrypt
- Testing: Jest + Supertest + mongodb-memory-server
- Scheduling: node-cron for automated tasks
- Framework: React 19 + TypeScript
- Styling: Tailwind CSS + cyber theme
- State Management: Zustand
- Routing: React Router v7
- Charts: Recharts
- Testing: Vitest + React Testing Library
- Linting: ESLint
- API Spec: OpenAPI 3.0
- CI/CD Ready: Jest testing framework
- Code Formatting: Consistent TypeScript standards
- Node.js 18+ installed
- MongoDB Atlas account OR local MongoDB
- npm or yarn package manager
# Clone the repository
git clone https://github.com/Divyanshkumar62/Skill_Forge/
cd skill-forge
# Setup backend
cd backend
npm install
# Setup frontend
cd ../frontend
npm install# Database Configuration
MONGODB_URI=mongodb://localhost:27017/skillforge
# OR for MongoDB Atlas:
MONGODB_URI=mongodb+srv://username:password@cluster.mongodb.net/skillforge?retryWrites=true&w=majority
# JWT Configuration
JWT_SECRET=your-super-secure-jwt-secret-key-here-minimum-32-characters
JWT_EXPIRES_IN=7d
# Server Configuration
PORT=3001
NODE_ENV=development
# Email Configuration (Optional)
EMAIL_HOST=smtp.gmail.com
EMAIL_PORT=587
EMAIL_USER=your-email@gmail.com
EMAIL_PASS=your-app-password
EMAIL_FROM=noreply@skillforge.comVITE_API_URL=http://localhost:3000
VITE_ENV=development- Create a free MongoDB Atlas cluster
- Get connection string and add to MONGODB_URI
- Database will be automatically created on first run
# Install MongoDB locally
brew install mongodb-community # macOS
sudo apt-get install mongodb # Ubuntu
# Start MongoDB service
mongod# Terminal 1: Backend
cd backend
npm run dev # Runs on http://localhost:3000
# Terminal 2: Frontend
cd frontend
npm run dev # Runs on http://localhost:5173# Backend - Build and start
cd backend
npm run build
npm start
# Frontend - Build
cd frontend
npm run build
npm run preview- Full API documentation:
docs/openapi.yaml - Interactive Swagger UI: http://localhost:3001/api-docs (when backend running)
// Authentication
POST /api/auth/register
POST /api/auth/login
// Tasks & Goals
GET /api/tasks
POST /api/tasks
DELETE /api/tasks/:id
// Gamification
POST /api/xp/earn
GET /api/rewards
POST /api/rewards/:id/purchase
// Analytics (NEW!)
GET /api/analytics/overview
GET /api/analytics/skillTree
// Notifications
GET /api/notifications
PATCH /api/notifications/:id/readAll secure endpoints require JWT token:
Authorization: Bearer <your-jwt-token>The application includes sample data for testing:
# Backend seeding (automatically runs on first startup)
npm run seed # Creates sample users, habits, tasks// Create sample user (via API)
POST /api/auth/register
{
"name": "Demo Hero",
"email": "demo@skillforge.com",
"password": "password123"
}
// Sample goals created automatically:
// - Read for 30 minutes daily
// - Exercise 3x per week
// - Complete project milestone
// - Write daily journalskill-forge/
├── backend/
│ ├── src/
│ │ ├── __tests__/ # Unit tests
│ │ │ ├── auth.service.test.ts
│ │ │ └── xp.service.test.ts
│ │ ├── controllers/ # API handlers
│ │ │ ├── auth.controller.ts
│ │ │ ├── analytics.controller.ts
│ │ │ └── xp.controller.ts
│ │ ├── models/ # MongoDB schemas
│ │ │ ├── user.model.ts
│ │ │ ├── habit.model.ts
│ │ │ └── goal.model.ts
│ │ ├── routes/ # API routes
│ │ ├── services/ # Business logic
│ │ ├── middlewares/ # Authentication, validation
│ │ └── utils/ # Helpers and utilities
│ ├── jest.config.js # Jest configuration
│ ├── package.json # Dependencies & scripts
│ └── docs/api-spec.yaml # API documentation
└── frontend/
├── src/
│ ├── __tests__/ # Component tests
│ │ ├── XpBar.test.tsx
│ │ ├── HabitCard.test.tsx
│ │ └── LoginForm.test.tsx
│ ├── components/ # Reusable UI components
│ │ ├── gamification/XpBar.tsx
│ │ ├── notifications/NotificationBell.tsx
│ │ └── layouts/DashboardLayout.tsx
│ ├── features/ # Feature-sliced architecture
│ │ ├── auth/ # Authentication feature
│ │ ├── habits/ # Habits management
│ │ ├── tasks/ # Task management
│ │ └── analytics/ # Analytics dashboard
│ ├── pages/ # Route-level components
│ ├── stores/ # Zustand state management
│ ├── hooks/ # Custom React hooks
│ └── types/ # TypeScript type definitions
├── vite.config.ts # Vite configuration
├── tailwind.config.js # Tailwind CSS configuration
└── package.json # Frontend dependencies
- TypeScript: 100% type coverage required
- Error Handling: Comprehensive try-catch blocks
- Authentication: JWT tokens for all user-specific endpoints
- Security: Input validation and sanitization
- Performance: Optimized database queries and caching
- Unit Tests: All services and utilities
- Integration Tests: API endpoints and database operations
- Component Tests: React components with React Testing Library
- Coverage: Minimum 80% coverage target
# Development workflow
git checkout -b feature/awesome-feature
# Make changes with tests
git commit -m "Add awesome feature with tests"
git push origin feature/awesome-feature
# Pull Request Requirements
- ✅ All tests passing
- ✅ Code review completed
- ✅ TypeScript compilation successful
- ✅ Documentation updatedNODE_ENV=production
MONGODB_URI=mongodb+srv://username:password@cluster.mongodb.net/skillforge_prod
JWT_SECRET=your-production-jwt-secret-minimum-32-characters
EMAIL_HOST=your-smtp-host
PORT=3001- Fork the repository
- Clone your fork
- Create a feature branch
- Make changes with tests
- Ensure all tests pass
- Open a Pull Request
- Write comprehensive unit tests
- Update API documentation
- Follow TypeScript best practices
- Ensure responsive design works on all devices
This project is licensed under the MIT License - see the LICENSE file for details.
- GitHub Issues for bug reports
- Documentation in
docs/folder - Community discussions in Discussions tab
Built with ❤️ using modern web technologies. Transform productivity into fun!