Your Day, Organized.
ReMindR is an automated daily productivity assistant designed for developers, managers, and tech teams. It transforms chaotic workdays into structured, organized summaries through Discord, AI processing, and seamless integrations with Notion and Google Calendar.
- π Evening Check-in: Automated Discord DM at 21:00 asking about your day
- π€ AI Processing: Cleans and structures messy notes into clear summaries
- π Notion Sync: Automatically creates beautifully formatted daily log pages
- π Calendar Integration: Pulls Google Calendar events for daily briefs
- βοΈ Morning Brief: Daily standup-ready summary delivered at 08:00
- π¨ Modern UI: Glassmorphism design with ReMindR branding
remindr/
βββ backend/ # FastAPI backend + Discord bot
βββ frontend/ # Vite + React web interface
βββ bot/ # Discord bot handlers
Tech Stack:
- Backend: FastAPI, PostgreSQL, SQLAlchemy
- Frontend: Vite, React 19, TypeScript, React Router
- Bot: discord.py
- AI: OpenAI API
- Integrations: Notion API, Google Calendar API
- Scheduling: APScheduler
- Python 3.12+
- Node.js 20+
- PostgreSQL 15+
- Discord Bot Token
- OpenAI API Key
- Notion Integration
- Google Cloud Project (for Calendar API)
cd backend
# Create virtual environment
python -m venv venv
.\venv\Scripts\activate # Windows
# source venv/bin/activate # Linux/Mac
# Install dependencies
pip install -r requirements.txt
# Copy environment file and configure
copy .env.example .env
# Edit .env with your API keys
# Run migrations (if using Alembic)
# alembic upgrade head
# Start backend
python -m app.mainBackend will run on http://localhost:8000
cd frontend
# Install dependencies
npm install
# Copy environment file and configure
copy .env.example .env
# Edit .env with your client IDs
# Start development server
npm run devFrontend will run on http://localhost:5173
cd bot
# (Uses same venv as backend)
# Configure bot token in backend/.env
# Run bot
python main.pyDATABASE_URL=postgresql://user:password@localhost:5432/remindr
DISCORD_BOT_TOKEN=your_bot_token
DISCORD_CLIENT_ID=your_client_id
DISCORD_CLIENT_SECRET=your_client_secret
OPENAI_API_KEY=sk-...
NOTION_CLIENT_ID=your_notion_client_id
NOTION_CLIENT_SECRET=your_notion_client_secret
GOOGLE_CLIENT_ID=your_google_client_id
GOOGLE_CLIENT_SECRET=your_google_client_secret
SECRET_KEY=your_jwt_secret
FRONTEND_URL=http://localhost:5173VITE_API_URL=http://localhost:8000
VITE_DISCORD_CLIENT_ID=your_discord_client_id
VITE_NOTION_CLIENT_ID=your_notion_client_id
VITE_GOOGLE_CLIENT_ID=your_google_client_id
VITE_APP_URL=http://localhost:5173Colors:
- Blue
#4B91F1- Primary focus - Violet
#7C3AED- Intelligence - Mint
#80FFCC- Accent - Gray Dark
#1E1E1E- Background
Font: Inter
Design: Glassmorphism with gradient accents
Once the backend is running, visit:
- Swagger UI:
http://localhost:8000/docs - ReDoc:
http://localhost:8000/redoc
cd backend
pytestcd frontend
npm test# Build and run with Docker Compose
docker-compose up -d- Backend: Deploy to a VPS, AWS EC2, or Platform as a Service (Render, Railway, Fly.io)
- Frontend: Deploy to Vercel, Netlify, or Cloudflare Pages
- Database: Use managed PostgreSQL (Supabase, Railway, Neon)
- Bot: Must be on always-on server with backend
- Core backend structure
- Database models
- Frontend design system
- Landing page
- Onboarding wizard
- Discord bot integration
- AI service implementation
- Notion API integration
- Google Calendar integration
- Dashboard UI
- History viewer
- Testing & deployment
MIT License - See LICENSE file for details
Contributions are welcome! Please feel free to submit a Pull Request.
Made with π by the ReMindR team
Your Day, Organized.
π ReMindR - Phase 1: Project Setup Complete β What Was Accomplished
Backend Infrastructure βοΈ Created a complete FastAPI backend foundation with:
Project Structure: Organized backend with modular architecture Database Models: SQLAlchemy models for Users, Daily Logs, and Meetings Configuration System: Pydantic settings with environment variable management API Framework: FastAPI app with CORS middleware configured Dependencies: All required packages defined in requirements.txt Key Files Created backend/app/main.py
- FastAPI application entry point backend/app/config.py
- Settings and configuration backend/app/database.py
- SQLAlchemy setup backend/app/models/user.py
- User model with OAuth tokens backend/app/models/daily_log.py
- Daily log model with JSON fields backend/app/models/meeting.py
- Meeting cache model backend/.env.example
- Environment configuration template Frontend Application π¨ Built a modern React frontend with ReMindR branding:
Vite + React 19: Latest React with TypeScript support Design System: Complete CSS design system with glassmorphism Landing Page: Stunning marketing page with gradient hero Routing: React Router configured for multi-page app API Client: Axios setup with JWT interceptors Dependencies: Router, HTTP client, date utilities, icons Key Features Implemented Design System ( index.css ):
ReMindR color palette (Blue #4B91F1, Violet #7C3AED, Mint #80FFCC) Glassmorphism cards with hover effects Animated buttons with gradient backgrounds Responsive styling for mobile devices Custom animations (fade-in, slide-in, spin) Landing Page ( Landing.tsx ):
Hero section with floating logo animation "Your Day, Organized." tagline 4-step workflow visualization Features grid showcasing automation, AI, calendar, and Notion Call-to-action section API Services ( api.ts ):
Axios instance with base URL configuration JWT token interceptors Typed API methods for auth, users, logs, and testing Error handling with automatic redirect on 401 Constants ( constants.ts ):
Brand colors and OAuth URLs Discord, Notion, Google OAuth URL generators Timezone and time options for pickers πΈ Landing Page Preview Here's what we built:
Landing Page - Hero Section Review Landing Page - Hero Section
Landing Page - Features and CTA Review Landing Page - Features and CTA
Landing Page Walkthrough Landing Page Interaction Review Landing Page Interaction
ποΈ Project Structure
c:\Users\strik\remindr
βββ backend/
β βββ app/
β β βββ models/
β β β βββ init.py
β β β βββ user.py
β β β βββ daily_log.py
β β β βββ meeting.py
β β βββ routers/
β β βββ services/
β β βββ schemas/
β β βββ init.py
β β βββ main.py
β β βββ config.py
β β βββ database.py
β βββ .env.example
β βββ requirements.txt
βββ frontend/
β βββ src/
β β βββ pages/
β β β βββ Landing.tsx
β β β βββ Landing.css
β β βββ components/
β β βββ services/
β β β βββ api.ts
β β βββ hooks/
β β βββ utils/
β β β βββ constants.ts
β β βββ App.tsx
β β βββ main.tsx
β β βββ index.css
β βββ .env.example
β βββ package.json
βββ bot/
β βββ handlers/
β βββ utils/
βββ README.md
β
Verification Results
Frontend Dev Server
VITE v7.2.4 ready in 240 ms
β Local: http://localhost:5173/
Status: β
Running Successfully
The landing page loads correctly with:
Gradient hero background Animated floating logo Glassmorphism cards with hover effects Responsive layout All sections visible (Hero, How It Works, Features, CTA) Backend Status Status: β³ Ready to Run
The backend is fully configured and ready to start once you:
Copy .env.example to .env and fill in API keys Set up PostgreSQL database Run: python -m app.main π― Next Steps Immediate Configure Environment: Copy .env.example files and add API keys
Backend: Discord, OpenAI, Notion, Google credentials Frontend: Client IDs for OAuth flows Database Setup:
Install PostgreSQL locally or use a managed service Create remindr database Update DATABASE_URL in backend .env Phase 2: Discord Bot Integration π€ Implemented the complete Discord bot architecture:
Bot Entry Point ( bot/main.py ):
Initializes Discord client with required intents Runs background scheduler loop (checks every minute) Handles connection events Handlers:
Evening Check-in ( bot/handlers/evening_checkin.py ): Queries backend for users to contact and sends formatted DMs. Message Handler ( bot/handlers/message_handler.py ): Processes user replies, sends to backend for AI processing, and returns Notion URLs. Morning Brief ( bot/handlers/morning_brief.py ): Fetches generated briefs and sends them to users. Backend Integration:
Created internal API router routers/bot.py to support bot operations Implemented endpoints for user checks, log processing, and brief generation Configured shared environment variables Utilities:
Message formatters for consistent, branded communication Error handling and user feedback messages Verification:
Backend API verified running on http://127.0.0.1:8000 Bot endpoints tested via curl: curl http://127.0.0.1:8000/bot/user-exists/12345
π― Next Steps Immediate Configure Environment: Copy .env.example files and add API keys
Backend: Discord, OpenAI, Notion, Google credentials Frontend: Client IDs for OAuth flows Database Setup:
Install PostgreSQL locally or use a managed service Create remindr database Update DATABASE_URL in backend .env Phase 3: AI/NLP Processing π§ Integrated OpenAI to power the intelligence of ReMindR:
AI Service ( backend/app/services/ai_service.py ):
Summarization: Transforms raw text into structured JSON (tasks, blockers, insights, priorities). Notion Generation: Converts structured data into formatted Markdown for Notion pages. Daily Brief: Generates concise, actionable morning briefs based on yesterday's data and today's meetings. Prompts:
Engineered specific prompts for French language output. Enforced JSON structure for reliable parsing. Designed "Daily Brief" persona to be professional and motivating. Integration:
Connected AI service to Bot Router. Added fallback mechanisms for API errors or rate limits. Created test endpoints to verify AI outputs without Discord. Verification:
Tested summarize_day with mock API key -> Correctly returns fallback structure. Verified integration with process_daily_log endpoint. π― Next Steps Immediate Configure Environment: Copy .env.example files and add API keys
Backend: Discord, OpenAI, Notion, Google credentials Frontend: Client IDs for OAuth flows Database Setup:
Install PostgreSQL locally or use a managed service Create remindr database Update DATABASE_URL in backend .env Phase 4: Notion Integration π Connected ReMindR to Notion for persistent daily logging:
Notion Service ( backend/app/services/notion_service.py ):
Implemented notion-client wrapper. Block Generator: Converts structured JSON summaries into Notion blocks (Headings, Bulleted Lists). Page Creation: Automatically creates pages in a parent database/page with the correct date title. Integration:
Updated Bot Router to trigger Notion page creation after AI processing. Added logic to handle missing tokens gracefully (for testing). Verification:
Verified block generation logic via test endpoint test/create-notion-page. Confirmed that JSON structure is correctly mapped to Notion UI elements. π― Next Steps Immediate Configure Environment: Copy .env.example files and add API keys
Backend: Discord, OpenAI, Notion, Google credentials Frontend: Client IDs for OAuth flows Database Setup:
Install PostgreSQL locally or use a managed service Create remindr database Update DATABASE_URL in backend .env Phase 5: Google Calendar Integration Implement Google Calendar API wrapper Fetch today's events for Daily Brief Handle timezones correctly Phase 7: Frontend Pages Onboarding wizard (4-step setup flow) Dashboard with connection status cards History viewer with daily log timeline OAuth callback handlers π§ͺ Testing Performed Frontend Build: β Successfully compiled with Vite Dependencies: β Installed with --legacy-peer-deps flag (React 19 compatibility) Landing Page: β Renders correctly with all animations Routing: β React Router configured and navigation ready Design System: β Glassmorphism effects and gradients working π Notes React 19 Compatibility: Had to use --legacy-peer-deps due to some libraries not yet supporting React 19 Removed react-calendar: Not compatible with React 19; will implement custom calendar or wait for update Design: Fully matches ReMindR branding specification with glassmorphism, gradients, and animations π Ready to Continue! The foundation is solid and ready for the next phases:
Backend API routes and services Discord bot handlers AI processing integration Notion and Google Calendar APIs Complete frontend onboarding flow All code follows best practices with TypeScript type safety, modular architecture, and clean separation of concerns.