QuestLog is an AI-powered productivity platform that turns task/project management into a rewarding progression system. Through XP points, achievement tracking, and smart insights, it creates an engaging framework that helps users maximize their daily productivity while making personal growth measurable and motivating!
- Personalized task insights and recommendations
- Analyzes task completion patterns, task completion rates, recent accomplishments, XP progression, and performance trends
- Real-time project sharing and collaboration
- Invite system via shareable codes
- Synchronized progress across team members
- Team activity tracking
- Project-specific collaboration settings
- Experience points (XP) and leveling
- Achievement badges
- Streak system
- Control tasks/projects via different XP settings
- Analytics dashboard
- Performance metrics and trends
- XP growth tracking
- Custom date range insights
- Cloud synchronization
- Project or Task creation
- List/Calendar views
- Label organization
- Public leaderboard
Tasks will be imported with default XP settings
- Todoist
- TickTick
-
Authentication:
- Secure sign-in via Google OAuth 2.0
- Session-based authentication with Passport.js
- Secure cookie management with express-session
-
Data Protection:
- MongoDB session store
- Resource ownership verification
- Password-less authentication flow
-
Network Security:
- Express.js security middleware
- Production-grade CORS policy
- Rate limiting protection
Built with:
- React - Frontend framework
- Express.js - Backend framework
- MongoDB - Database
- Vercel - Hosting platform
- Tailwind CSS - Styling
- Google OAuth 2.0 - Authentication
- Passport.js - Auth Middleware
- Docker - Container Orchestration
graph TB
%% External Services Layer
subgraph External["External Services"]
OAuth[OAuth Providers]
AppIntegrations[App Integrations]
end
%% Frontend Layer
subgraph Frontend["Frontend (React)"]
direction TB
App[App.js]
Auth[Authentication]
ModalManager[Task/Project Management]
GameSystem[Game Systems]
end
%% Backend Layer
subgraph Backend["Backend (Express.js)"]
direction TB
Server[Server.js]
AuthService[Auth Service]
ItemService[Task/Project Service]
GameService[Game Service]
IntegrationService[Integration Service]
Passport[Passport.js]
Session[Session Management]
end
%% Database Layer
subgraph Database["Database Layer"]
direction TB
MongoDB[(MongoDB)]
SessionStore[(Session Store)]
end
%% Core Connections
Frontend --> Backend
Backend --> External
Backend --> Database
%% Detailed Connections
Auth --> AuthService
ModalManager --> ItemService
ModalManager --> IntegrationService
GameSystem --> GameService
AuthService --> OAuth
IntegrationService --> AppIntegrations
Session --> SessionStore
%% Frontend Flow
App --> Auth & ModalManager & GameSystem
%% Backend Flow
Server --> AuthService & ItemService & GameService & IntegrationService & Session
AuthService --> Passport
classDef frontend fill:#42b883,stroke:#333,stroke-width:2px
classDef backend fill:#68a063,stroke:#333,stroke-width:2px
classDef external fill:#f5a623,stroke:#333,stroke-width:2px
classDef database fill:#4479a1,stroke:#333,stroke-width:2px
- Node.js (v14.0.0 or later)
- Docker and Docker Compose
- Google OAuth credentials from Google Cloud Console
-
Clone the repository:
git clone https://github.com/hussaino03/QuestLog.git cd QuestLog
-
Set up environment:
# Copy the example environment file cp example.env .env.test # Only required changes: # - GOOGLE_CLIENT_ID=your_client_id_from_google_cloud_console # - GOOGLE_CLIENT_SECRET=your_client_secret_from_google_cloud_console # - REACT_APP_GOOGLE_CLIENT_ID=same_as_GOOGLE_CLIENT_ID
-
Start with Docker:
docker-compose --env-file .env.test up --build
-
Access the application:
- Frontend: http://localhost:3000
- Backend: http://localhost:3001
The example.env includes working test values for all other configurations. You only need to provide Google OAuth credentials to get started.
POST /api/users
: Create or retrieve a userGET /api/users/:id
: Get user dataPUT /api/users/:id
: Update user data (XP, level, tasks/projects completed)GET /api/leaderboard
: Retrieve leaderboard dataPOST /api/auth/google
: Handle Google OAuth authenticationGET /api/auth/<integrations>
: integrations OAuth importPOST /api/projects/:id/share
: Generate project share codePOST /api/projects/:id/join
: Join project via share codeGET /api/projects/:id/collaborators
: Get project collaboratorsDELETE /api/projects/:id/collaborators/:userId
: Remove collaborator
- All data synced with MongoDB
- Available across devices
- Progress tracked on the leaderboard
If you find QuestLog helpful and would like to support its development:
Please refer to CONTRIBUTING.md for contribution guidelines.
This project is open source and available under the MIT License.