SmartList
SmartList copied to clipboard
π Notable Mention - ππ―π€π¦π―π΅πͺπ·πͺπ»πͺπ―π¨ ππ³π°π₯πΆπ€π΅πͺπ·πͺπ΅πΊ
QuestLog
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!
β¨ Key Features
π€ AI-Powered Productivity
- Personalized task insights and recommendations
- Analyzes task completion patterns, task completion rates, recent accomplishments, XP progression, and performance trends
π₯ Collaborative Projects
- Real-time project sharing and collaboration
- Invite system via shareable codes
- Synchronized progress across team members
- Team activity tracking
- Project-specific collaboration settings
π Progress System
- Experience points (XP) and leveling
- Achievement badges
- Streak system
- Control tasks/projects via different XP settings
π Productivity Analytics
- Analytics dashboard
- Performance metrics and trends
- XP growth tracking
- Custom date range insights
π Task/Project Management
- Cloud synchronization
- Project or Task creation
- List/Calendar views
- Label organization
π Social Features
- Public leaderboard
βοΈ Integrations
Tasks will be imported with default XP settings
- Todoist
- TickTick
π Security
-
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
π οΈ Technical Overview
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
ποΈ Architecture
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
π Quick Start
Prerequisites
- Node.js (v14.0.0 or later)
- Docker and Docker Compose
- Google OAuth credentials from Google Cloud Console
Installation
-
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.
π§ API Endpoints
-
POST /api/users
: Create or retrieve a user -
GET /api/users/:id
: Get user data -
PUT /api/users/:id
: Update user data (XP, level, tasks/projects completed) -
GET /api/leaderboard
: Retrieve leaderboard data -
POST /api/auth/google
: Handle Google OAuth authentication -
GET /api/auth/<integrations>
: integrations OAuth import -
POST /api/projects/:id/share
: Generate project share code -
POST /api/projects/:id/join
: Join project via share code -
GET /api/projects/:id/collaborators
: Get project collaborators -
DELETE /api/projects/:id/collaborators/:userId
: Remove collaborator
πΎ Data Persistence
- All data synced with MongoDB
- Available across devices
- Progress tracked on the leaderboard
π³ Support
If you find QuestLog helpful and would like to support its development:
π€ Contributing
Please refer to CONTRIBUTING.md for contribution guidelines.
π License
This project is open source and available under the MIT License.