A comprehensive task management and note-taking application with gamification features, built with Next.js, NextAuth.js, and Prisma.
- Todo Management: Create, edit, delete, and track todos with priorities and due dates
- Note Taking: Capture thoughts with different note types (General, Bible Study, Conference, Song, Quote, Reflection)
- Gamification: Earn points, level up, and unlock achievements
- Dashboard: Real-time overview of your productivity stats
- Responsive Design: Beautiful, modern UI that works on all devices
- Points System: Earn points for completing tasks and creating notes
- Level Progression: Level up based on total points earned
- Achievements: Unlock achievements for various milestones
- Streaks: Track your daily activity streaks
- Real-time Stats: View your productivity metrics
- Progress Tracking: Monitor your level progress and achievements
- Activity Overview: See your completion rates and patterns
- Frontend: Next.js 15, React 19, TypeScript
- Styling: Tailwind CSS
- Authentication: NextAuth.js v5 with Google OAuth
- Database: PostgreSQL with Prisma ORM
- Icons: Heroicons
- Date Handling: date-fns
smart-todo/
├── src/
│ ├── app/
│ │ ├── (authenticated)/ # Protected routes with sidebar
│ │ │ ├── dashboard/ # Main dashboard
│ │ │ ├── todos/ # Todo management
│ │ │ ├── notes/ # Note taking
│ │ │ ├── calendar/ # Calendar view (coming soon)
│ │ │ ├── analytics/ # Analytics dashboard (coming soon)
│ │ │ ├── achievements/ # Achievement tracking
│ │ │ └── layout.tsx # Authenticated layout with sidebar
│ │ ├── api/ # API routes
│ │ │ ├── auth/ # Authentication endpoints
│ │ │ ├── todos/ # Todo CRUD operations
│ │ │ ├── notes/ # Note CRUD operations
│ │ │ ├── achievements/ # Achievement data
│ │ │ └── stats/ # User statistics
│ │ ├── page.tsx # Landing page
│ │ └── layout.tsx # Root layout
│ ├── components/
│ │ ├── auth/ # Authentication components
│ │ ├── layout/ # Layout components (Sidebar, AppLayout)
│ │ ├── todos/ # Todo-related components
│ │ ├── notes/ # Note-related components
│ │ ├── achievements/ # Achievement components
│ │ └── providers/ # Context providers
│ ├── lib/
│ │ └── auth.ts # NextAuth configuration
│ └── types/
│ └── next-auth.d.ts # TypeScript declarations
├── prisma/
│ ├── schema.prisma # Database schema
│ └── seed.ts # Database seeding
└── package.json
- Node.js 18+
- PostgreSQL database
- Google OAuth credentials
-
Clone the repository
git clone <repository-url> cd smart-todo
-
Install dependencies
npm install
-
Set up environment variables Create a
.env.localfile with:DATABASE_URL="postgresql://username:password@localhost:5432/smart_todo" NEXTAUTH_SECRET="your-secret-key" GOOGLE_CLIENT_ID="your-google-client-id" GOOGLE_CLIENT_SECRET="your-google-client-secret" NEXTAUTH_URL="http://localhost:3000"
-
Set up the database
npm run db:generate npm run db:push npm run db:seed
-
Start the development server
npm run dev
-
Open your browser Navigate to http://localhost:3000
The application uses the following main models:
- User: Authentication and user profile data
- Todo: Task management with priorities and due dates
- Note: Note-taking with different types
- Achievement: Gamification achievements
- UserAchievement: User progress tracking
- UserStats: User statistics and progress
GET/POST /api/auth/[...nextauth]- NextAuth.js endpoints
GET /api/todos- List todos with filtering and sortingPOST /api/todos- Create a new todoPUT /api/todos/[id]- Update a todoDELETE /api/todos/[id]- Delete a todo
GET /api/notes- List notes with filtering and searchPOST /api/notes- Create a new notePUT /api/notes/[id]- Update a noteDELETE /api/notes/[id]- Delete a note
GET /api/stats- Get user statistics and progress
GET /api/achievements- Get available achievements and user progress
- Calendar View: Full calendar integration with todo scheduling
- Advanced Analytics: Detailed productivity insights and charts
- AI Insights: AI-powered productivity recommendations
- Mobile App: Native mobile application
- Team Collaboration: Shared workspaces and team features
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
This project is licensed under the MIT License.