GoalGenius is a modern, open-source goal tracking and productivity platform built with Next.js and Cloudflare.
- 🎯 Goal Tracking: Set, track, and achieve your personal and professional goals
- ✅ Todo Management: Organize tasks with priorities and deadlines
- 📝 Note Taking: Capture ideas and important information
- 📊 Analytics Dashboard: Visualize your progress and productivity trends
- 📅 Calendar Integration: Schedule and manage your time effectively
- 🏆 Milestones: Break down goals into achievable milestones
- 📈 Check-ins: Regular progress tracking and reflection
- 🔒 Secure Authentication: Protected user data and privacy
- 🌐 Cloud Infrastructure: Powered by Cloudflare for global scalability
- Node.js 18.0 or later
- pnpm 8.0 or later
- Cloudflare account (for deployment)
-
Clone the repository
git clone https://github.com/ismailco/goalgenius.git cd goalgenius
-
Install dependencies
pnpm install
-
Set up environment variables
cp .dev.vars.example .dev.vars cp .env.local.example .env.local # Edit .dev.vars and .env.local with your configuration
-
Set up the database
pnpm db:generate pnpm db:migrate:local
-
Start the development server
pnpm dev
Visit http://localhost:3000 to see the application.
- Frontend: Next.js 15.2.5, React 19, TailwindCSS
- Database: Cloudflare D1 with Drizzle ORM
- Authentication: Custom auth with better-auth
- Deployment: Cloudflare Workers with OpenNext.js
- Type Safety: TypeScript
- Security: DOMPurify, XSS protection
- UI Components: Custom components with Framer Motion
goalgenius/
├── app/ # Next.js app router pages
│ ├── analytics/ # Analytics features
│ ├── calendar/ # Calendar integration
│ ├── dashboard/ # Main dashboard
│ ├── goals/ # Goal management
│ └── ...
├── components/ # Reusable React components
├── lib/ # Utility functions and helpers
├── drizzle/ # Database schema and migrations
└── public/ # Static assets
Create a .dev.vars
file in the root directory with the following variables:
# Development Environment
NEXTJS_ENV=development
NODE_ENV=development
# Cloudflare D1 Configuration
CLOUDFLARE_D1_ACCOUNT_ID=your_account_id
CLOUDFLARE_D1_DATABASE_ID=your_database_id
CLOUDFLARE_D1_API_TOKEN=your_api_token
# Authentication
BETTER_AUTH_URL=your_auth_url
BETTER_AUTH_SECRET=your_auth_secret
Create a .env.local
file in the root directory with the following variables:
# Cloudflare D1 Configuration
CLOUDFLARE_D1_ACCOUNT_ID=your_account_id
CLOUDFLARE_D1_DATABASE_ID=your_database_id
CLOUDFLARE_D1_API_TOKEN=your_api_token
# Authentication
AUTH_GITHUB_CLIENT_ID=your_github_client_id
AUTH_GITHUB_CLIENT_SECRET=your_github_client_secret
AUTH_GOOGLE_CLIENT_ID=your_google_client_id
AUTH_GOOGLE_CLIENT_SECRET=your_google_client_secret
The project uses Cloudflare D1 as the database. To set up:
- Create a D1 database in your Cloudflare account
- Update wrangler.jsonc with your database details
- Run migrations using provided scripts
-
Install Wrangler CLI
pnpm add -g wrangler
-
Configure Cloudflare
wrangler login
-
Deploy to Cloudflare (Don't deploy this way, use the Cloudflare dashboard)
pnpm deploy
We welcome contributions! Please see our Contributing Guide for details.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature
) - Commit your changes (
git commit -m 'Add some AmazingFeature'
) - Push to the branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
This project is licensed under the GNU Affero General Public License v3.0 (AGPLv3) - see the LICENSE file for details. This means:
- You can use this software for any purpose
- You can modify this software
- You must share any modifications you make under the same license
- You must disclose your source code when you distribute the software
- If you run a modified version of this software as a network service, you must make the complete source code available to any network user
- Next.js - The React Framework
- Cloudflare - For infrastructure and D1 database
- Drizzle - For the amazing ORM
- All our contributors and supporters
- Documentation: https://goalgenius.online/docs
- Issues: GitHub Issues