Orbit is a modern habit tracking web application built to help users stay consistent and achieve personal growth.
It combines daily habit tracking, progress visualization, challenges, and streaks with a sleek, optimized UI.
This project also demonstrates full-stack development skills using React, Redux Toolkit, Firebase, and advanced UI/UX principles, making it both a portfolio-ready showcase and a practical tool for daily use.
- π Daily Habit Reset β Automatically resets habits at login each day.
- β Habit Completion β Mark habits as completed with a single click.
- π Progress Charts & Streaks β Visualize your growth and track streaks.
- π― Challenges & Motivation β Stay engaged with challenges and streak milestones.
- β‘ Optimized Performance β Batched Firestore writes & reduced re-renders.
- π Light/Dark Mode β Smooth theme switching for a better user experience.
- π¨ Modern UI/UX β Responsive, animated, and mobile-first design.
- π₯ Realtime Sync β Firebase Firestore ensures live updates.
- React 18 β UI library
- Redux Toolkit β State management with async thunks
- TailwindCSS β Utility-first styling
- Firebase Firestore β Realtime NoSQL database
- Firebase Authentication β Secure user authentication
- Vercel β Serverless deployment with CI/CD
git clone https://github.com/your-username/orbit-habit-tracker.git
cd orbit-habit-tracker
2. Install Dependencies
cli
Copy code
npm install
Create a project in Firebase Console.
Enable Authentication and Firestore Database.
Add your Firebase config in src/firebase.js:
js
Copy code
import { initializeApp } from "firebase/app";
import { getFirestore } from "firebase/firestore";
import { getAuth } from "firebase/auth";
const firebaseConfig = {
apiKey: "YOUR_API_KEY",
authDomain: "YOUR_AUTH_DOMAIN",
projectId: "YOUR_PROJECT_ID",
storageBucket: "YOUR_STORAGE_BUCKET",
messagingSenderId: "YOUR_SENDER_ID",
appId: "YOUR_APP_ID",
};
const app = initializeApp(firebaseConfig);
export const db = getFirestore(app);
export const auth = getAuth(app);
- Run the App
cli
npm run dev
Open http://localhost:5173 in your browser.
π Project Structure
orbit-habit-tracker/
βββ src/
β βββ components/ # UI components (Navbar, Footer, etc.)
β βββ features/ # Redux slices & async thunks
β βββ pages/ # Main app pages (Home, Dashboard, Auth)
β βββ utils/ # Helper utilities (date, formatters)
β βββ App.jsx # Root app component
β βββ main.jsx # Entry point
β βββ firebase.js # Firebase setup
βββ public/ # Static assets
βββ package.json
βββ README.md
π Optimizations
Performance: Batched Firestore writes instead of multiple updateDoc calls.
Code Quality: Extracted reusable utilities (e.g., getToday()).
State Management: Normalized Redux state for O(1) habit lookups.
UI/UX: Optimized for mobile-first layout with smooth animations.
Error Handling: Used rejectWithValue in thunks for clean error states.
π Deployment
Push your repo to GitHub.
Connect it with Vercel.
Add Firebase config as environment variables in Vercel.
Deploy and share your live app! π
π€ Contributing Contributions are welcome! Fork the repo, make improvements, and open a pull request.
π License This project is licensed under the MIT License.
π¨βπ» Author Built with β€οΈ by Syed Abdul Qadeer Currently pursuing Full-Stack Web Development @ Masai School #dailylearning #masaiverse