A comprehensive web application for setting, tracking, and achieving personal goals with AI assistance.
- AI-Powered Goal Management: Create and track goals with intelligent insights
- Daily Planning: Generate personalized daily plans using AI
- Focus Mode: Distraction-free work sessions with timer
- Habit Tracking: Build and maintain positive habits with streak tracking
- Journal & Reflection: AI-assisted journaling and progress tracking
- Analytics Dashboard: Comprehensive insights into your progress
- Achievement System: Gamified progress tracking with badges
- Drift AI Assistant: Intelligent chat assistant for goal guidance
-
Clone the repository
git clone <repository-url> cd justgoals
-
Install dependencies
npm install
-
Set up environment variables Create a
.envfile in the root directory:VITE_GEMINI_API_KEY=your_gemini_api_key_here VITE_GOOGLE_CLIENT_ID=your_google_oauth_client_id_here VITE_GOOGLE_CLIENT_SECRET=your_google_oauth_client_secret_here
-
Start the development server
npm run dev
To enable Google Calendar integration:
-
Create a Google Cloud Project
- Go to Google Cloud Console
- Create a new project or select an existing one
-
Enable Google Calendar API
- Navigate to "APIs & Services" > "Library"
- Search for "Google Calendar API" and enable it
-
Create OAuth 2.0 Credentials
- Go to "APIs & Services" > "Credentials"
- Click "Create Credentials" > "OAuth 2.0 Client IDs"
- Choose "Web application"
- Add authorized redirect URIs:
http://localhost:5173/oauth2callback(for development)https://yourdomain.com/oauth2callback(for production)
-
Set Environment Variables
- Copy the Client ID and Client Secret to your
.envfile - The Client Secret is used in the Vercel serverless function
- Copy the Client ID and Client Secret to your
-
Deploy OAuth Handler
- The OAuth token exchange is handled by
/api/googleOAuth.js - Deploy this to Vercel or your preferred serverless platform
- The OAuth token exchange is handled by
- Purpose: Powers all AI features including Drift assistant, daily planning, goal suggestions, and intelligent insights
- Why it's needed: The app uses Google's Gemini AI to provide personalized goal strategies, daily planning, and intelligent chat assistance
- Get your API key: Visit Google AI Studio
- Cost: Free tier available with generous limits
- Purpose: Enables two-way Google Calendar sync for the day planner
- Why it's optional: The app works perfectly without calendar integration
- Setup: See Google OAuth setup instructions above
- Cost: Free with Google Cloud Platform
The app's core value comes from AI-powered features:
- Drift Assistant: Intelligent chat that helps with goal planning and motivation
- Daily Planning: AI generates personalized daily schedules based on your goals
- Goal Insights: AI analyzes your progress and suggests improvements
- Smart Suggestions: AI provides context-aware recommendations
Without the Gemini API key, these AI features won't work, but you can still use basic goal tracking and focus mode.
- Syncs your day planner events to Google Calendar
- Imports Google Calendar events into your daily plan
- Adds reminders for your planned activities
- Works with any Google account - no special setup needed
The Google Calendar integration is designed to work for any user:
- Single OAuth Setup: One Google Cloud project handles all users
- User-Specific Tokens: Each user gets their own access tokens
- No User Limits: Works with unlimited users
- Automatic Setup: Users just click "Link Google Calendar" and authorize
# Required for AI features
VITE_GEMINI_API_KEY=your_gemini_api_key_here
# Optional for Google Calendar (one setup for all users)
VITE_GOOGLE_CLIENT_ID=your_google_oauth_client_id_here
VITE_GOOGLE_CLIENT_SECRET=your_google_oauth_client_secret_herenpm run dev- Start development servernpm run build- Build for productionnpm run preview- Preview production buildnpm run electron- Run Electron appnpm run package- Package Electron app
src/
├── components/ # Reusable UI components
├── context/ # React context providers
├── pages/ # Page components
├── services/ # API and external service integrations
├── styles/ # Global styles and Tailwind config
└── utils/ # Utility functions
- Build the project:
npm run build - Deploy the
distfolder to your hosting provider - Set up environment variables in your hosting platform
-
Connect your repository to Vercel
- Go to vercel.com
- Import your GitHub repository
- Vercel will automatically detect it's a Vite project
-
Set up Environment Variables in Vercel
- In your Vercel project dashboard, go to "Settings" > "Environment Variables"
- Add the following variables:
VITE_GEMINI_API_KEY=your_gemini_api_key_here VITE_GOOGLE_CLIENT_ID=your_google_oauth_client_id_here VITE_GOOGLE_CLIENT_SECRET=your_google_oauth_client_secret_here- Set the environment to "Production" (and optionally "Preview" for testing)
- Click "Save"
-
Deploy the OAuth Handler
- The
/api/googleOAuth.jsfile will be automatically deployed as a serverless function - Make sure your Google OAuth redirect URI includes your Vercel domain:
https://your-project.vercel.app/oauth2callback
- The
-
Update Google OAuth Settings
- Go to Google Cloud Console
- Navigate to "APIs & Services" > "Credentials"
- Edit your OAuth 2.0 Client ID
- Add your Vercel domain to "Authorized redirect URIs":
https://your-project.vercel.app/oauth2callback
- Run
npm run packageto create distributable - Find the packaged app in the
outdirectory
- Fork the repository
- Create a feature branch
- Make your changes
- Submit a pull request
This project is licensed under the MIT License.