A production-ready, full-stack task management application built with React, TypeScript, Firebase, and OpenAI integration.
- Authentication: Email/password and Google Sign-In
- Task Management: Create, edit, delete, and toggle task completion
- Priority System: High, medium, and low priority levels
- Calendar View: Month and week views with task visualization
- AI Suggestions: Get personalized task recommendations using OpenAI
- Real-time Updates: Live synchronization across devices
- Responsive Design: Works seamlessly on desktop and mobile
- Security: Firestore security rules and user data isolation
- Frontend: React 18, TypeScript, Tailwind CSS, Framer Motion
- Backend: Firebase (Auth, Firestore, Functions)
- AI: OpenAI GPT-3.5-turbo
- Build Tool: Vite
- Testing: Vitest
- Deployment: Firebase Hosting
- CI/CD: GitHub Actions
- Node.js 18+
- Firebase CLI
- Firebase project with Authentication, Firestore, and Functions enabled
- OpenAI API key
-
Clone the repository
git clone <your-repo-url> cd daily-task-scheduler
-
Install dependencies
npm install cd functions && npm install && cd ..
-
Configure environment variables
cp .env.example .env
Fill in your Firebase and OpenAI credentials in
.env -
Update Firebase configuration
- Update
.firebasercwith your Firebase project ID - Set OpenAI API key in Firebase Functions config:
firebase functions:config:set openai.key="your-openai-api-key"
- Update
-
Start Firebase emulators
firebase emulators:start
-
Start the development server (in a new terminal)
npm run dev
-
Access the application
- Frontend: http://localhost:5173
- Firebase UI: http://localhost:4000
Run the test suite:
npm testRun tests with UI:
npm run test:ui-
Build the project
npm run build
-
Deploy to Firebase
firebase deploy
-
Set up GitHub Secrets Add the following secrets to your GitHub repository:
VITE_FIREBASE_API_KEYVITE_FIREBASE_AUTH_DOMAINVITE_FIREBASE_PROJECT_IDVITE_FIREBASE_STORAGE_BUCKETVITE_FIREBASE_MESSAGING_SENDER_IDVITE_FIREBASE_APP_IDVITE_OPENAI_API_KEYFIREBASE_TOKEN(get withfirebase login:ci)
-
Push to main branch
git push origin main
The GitHub Action will automatically build, test, and deploy your application.
daily-task-scheduler/
├── src/
│ ├── components/ # React components
│ │ ├── auth/ # Authentication components
│ │ ├── calendar/ # Calendar view components
│ │ ├── tasks/ # Task management components
│ │ └── ui/ # Reusable UI components
│ ├── contexts/ # React contexts
│ ├── hooks/ # Custom React hooks
│ ├── services/ # API services
│ ├── types/ # TypeScript type definitions
│ └── tests/ # Test files
├── functions/ # Firebase Cloud Functions
├── public/ # Static assets
├── .github/workflows/ # GitHub Actions
├── firebase.json # Firebase configuration
├── firestore.rules # Firestore security rules
└── firestore.indexes.json # Firestore indexes
- Email/password authentication enabled
- Google Sign-In provider configured
- User profile management
- Collection:
tasks- stores user tasks - Collection:
users- stores user profiles - Security rules enforce user data isolation
- Indexes optimize query performance
getTasks- Retrieve user taskscreateTask- Create new taskupdateTask- Update existing taskdeleteTask- Delete taskgetAISuggestion- Get AI-powered task suggestions
- Users can only access their own data
- All operations require authentication
- Data validation on writes
VITE_FIREBASE_*- Firebase configurationVITE_OPENAI_API_KEY- OpenAI API key
openai.key- OpenAI API key (set via Firebase CLI)
All endpoints are Firebase Cloud Functions:
getTasks()- Get user's taskscreateTask(data)- Create a new taskupdateTask(taskId, updates)- Update a taskdeleteTask(taskId)- Delete a taskgetAISuggestion()- Get AI task recommendation
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests for new functionality
- Ensure all tests pass
- Submit a pull request
This project is licensed under the MIT License.
For support, please open an issue on GitHub or contact the development team.