- Install dependencies:
npm install
-
Configure Firebase:
- Create a new Firebase project at Firebase Console
- Enable Google Authentication:
- Go to Authentication > Sign-in method
- Enable Google sign-in
- Configure OAuth consent screen
- Add authorized domains
- Enable Realtime Database:
- Create a new Realtime Database
- Start in test mode
- Copy the database URL
- Set up security rules:
- Go to Realtime Database > Rules
- Copy the contents of
database.rules.json
- Save the rules
- Create a web app:
- Go to Project Settings
- Add a web app
- Copy the Firebase configuration
-
Create a
.env
file:
VITE_FIREBASE_API_KEY=your-api-key
VITE_FIREBASE_PROJECT_ID=your-project-id
VITE_FIREBASE_DATABASE_URL=your-database-url
VITE_FIREBASE_APP_ID=your-app-id
VITE_EMAILJS_PUBLIC_KEY=your-emailjs-public-key
VITE_EMAILJS_SERVICE_ID=your-emailjs-service-id
- Start the development server:
npm run dev
- Click "Sign in with Google" on the login page
- Grant necessary permissions
- You'll be redirected to the main application
- Enter task description in the input field
- (Optional) Set a due date using the calendar picker
- (Optional) Choose a recurrence pattern:
- Daily
- Weekly
- Monthly
- Yearly
- (Optional) Set priority level:
- High
- Medium
- Low
- Click "Add Todo" or press Enter
New tasks are automatically added to:
- Currently selected list
- Inbox when using filters (Today, Next 7 Days, etc.)
- Complete: Click the checkbox
- Edit: Click the pencil icon
- Delete: Click the trash icon
- Set Due Date: Use the calendar icon
- Set Recurrence: Use the repeat icon
- Set Priority: Use the flag icon
The sidebar provides a unified view of:
- Smart filters (Today, Next 7 Days, etc.)
- Custom lists Tasks can be filtered by:
- All tasks
- Active tasks
- Completed tasks
- Today's tasks
- Next 7 days
When creating a recurring task:
- Set a due date (required for recurring tasks)
- Choose a recurrence pattern
- When completed, a new occurrence is automatically created
The system maintains the original pattern while creating new occurrences, ensuring consistent task management.
listor/
├── client/ # Frontend React application
│ ├── src/
│ │ ├── components/ # React components
│ │ ├── contexts/ # React contexts
│ │ ├── hooks/ # Custom hooks
│ │ ├── lib/ # Utility functions
│ │ └── pages/ # Page components
├── shared/ # Shared types and schemas
└── database.rules.json # Firebase security rules
- Install Firebase CLI globally (if not already installed):
npm install -g firebase-tools
- Login to Firebase:
firebase login
- Configure environment variables for production:
# Create a .env.production file with your production values
firebase functions:config:set emailjs.public_key="your_emailjs_public_key"
firebase functions:config:set emailjs.service_id="your_emailjs_service_id"
- Deploy the application:
npm run build
firebase deploy
The following environment variables are required:
Development (.env
):
VITE_FIREBASE_API_KEY=your-api-key
VITE_FIREBASE_PROJECT_ID=your-project-id
VITE_FIREBASE_DATABASE_URL=your-database-url
VITE_FIREBASE_APP_ID=your-app-id
VITE_EMAILJS_PUBLIC_KEY=your-emailjs-public-key
VITE_EMAILJS_SERVICE_ID=your-emailjs-service-id
Production (Firebase): Make sure to set these using Firebase CLI:
firebase functions:config:set emailjs.public_key="your_value"
firebase functions:config:set emailjs.service_id="your_value"