A research-backed single-page productivity planning web app built with Next.js that helps users balance work and rest through visual task management with 40-minute work blocks and 5-minute breaks.
- Task Dump - Add tasks with priority (P1-P4), duration, and category
- Visual Schedule - 40-minute work blocks + 5-minute breaks
- Drag-and-Drop - Move tasks from dump to schedule seamlessly
- Priority Matrix - Eisenhower matrix (Urgent/Important)
- Timer & Sessions - Focus timer with break reminders
- Dashboard - Productivity metrics and analytics
- Single Page App - All tools accessible in one view
- Frontend: Next.js 16, React 19, Tailwind CSS 4
- Backend: Next.js API Routes, Node.js
- Database: MongoDB Atlas
- Drag-and-Drop: @dnd-kit
- State Management: React Context API
- Authentication: JWT with bcryptjs
- Clone the repository:
git clone https://github.com/BalajiRKB/Planpa.git
cd planpa- Install dependencies:
npm install- Set up environment variables:
cp .env.local.example .env.localEdit .env.local and add your MongoDB URI and JWT secret:
MONGODB_URI=mongodb+srv://<username>:<password>@cluster0.xxxxx.mongodb.net/planpa
JWT_SECRET=your-super-secret-jwt-key- Run the development server:
npm run dev- Open http://localhost:3000 in your browser.
- Create a free MongoDB Atlas account at https://cloud.mongodb.com
- Create a new cluster
- Get your connection string and add it to
.env.local - The app will automatically create collections on first use
users- User accounts and preferencestasks- All tasks with priority and statusschedules- Daily schedulestimeblocks- Individual 40/5 minute blocks
- Add Tasks: Click "+ Add Task" in the Task Dump section
- Create Schedule: Click "Create Today's Schedule" to generate work/break blocks
- Drag Tasks: Drag tasks from the dump to schedule blocks
- Start Timer: Click on a block to start the focus timer
- Track Progress: View your productivity metrics in the Dashboard
userId,email,name,preferences(work/break duration, timezone, notifications)
taskId,title,description,priority(P1-P4),estimatedDuration,status,category
blockId,startTime,endTime,duration(40 or 5 min),blockType(Work/Break),assignedTasks
scheduleId,date,timeBlocks,totalPlannedTasks
npm run dev # Start development server
npm run build # Build for production
npm run start # Start production server
npm run lint # Run ESLint- Push your code to GitHub
- Import project in Vercel
- Add environment variables in Vercel dashboard
- Deploy
docker build -t planpa .
docker run -p 3000:3000 --env-file .env.local planpaPOST /api/auth/register- Register new userPOST /api/auth/login- Login userGET /api/tasks- Get all tasksPOST /api/tasks- Create taskPUT /api/tasks- Update taskDELETE /api/tasks- Delete taskGET /api/schedules- Get schedulesPOST /api/schedules- Create schedule
Contributions are welcome! Please feel free to submit a Pull Request.
MIT License - see LICENSE file for details
Balaji RKB
- GitHub: @BalajiRKB
- Based on research showing 40-minute work blocks optimize focus and retention
- Inspired by the Pomodoro Technique and Eisenhower Matrix
- Built with Next.js and modern web technologies
Made with ❤️ for better productivity