Skip to content

Harshita2404007/DailyForge

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

126 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🔨 DailyForge

Build routines. Forge habits. Own your week.

DailyForge is an open-source fullstack MERN productivity app that lets you design, manage, and visualize your weekly routines — with drag-and-drop scheduling, a smart task library, and overlap protection built right in.

GSSoC PRs Welcome Stars

🌐 Live Demo · ⚡ Quick Start · 🤝 Contribute · 📸 Screenshots


📑 Table of Contents


🚀 Project Overview

Most productivity tools are either too bloated or too simple. DailyForge is a no-nonsense weekly planner that gives you total control over your schedule — built by students, for students and professionals alike.

What it does:

  • Build a reusable task library with custom durations, colors, and categories
  • Design weekly routines by dragging tasks into a visual time grid
  • Save, update, and delete routines with one click
  • Automatically detects and prevents scheduling conflicts for the same day

Why it matters:
Most people don't fail to plan — they fail to stick to a plan. DailyForge makes routines feel visual and deliberate, making habits easier to build and track.

Key highlights:

  • ⚡ Drag-and-drop weekly planner powered by @dnd-kit
  • 🔒 Secure JWT authentication with bcrypt password hashing
  • 🗂️ Reusable routine templates to clone and reuse schedules
  • 🚫 Conflict detection — no overlapping tasks on the same day
  • 📱 Clean, responsive UI built with React 19 + Tailwind CSS v4

🌐 Live Demo

Service URL
🖥️ Frontend https://dailyforge-frontend-lhjq.onrender.com
⚙️ Backend API https://dailyforge-backend.onrender.com

⚠️ Deployed on Render's free tier — first load may take 30–60 seconds to spin up.


✨ Features

🔐 Authentication

  • Signup / Login with JWT-based session management
  • Protected routes — unauthenticated users are redirected to login
  • Passwords hashed with bcrypt

📋 Task Management

  • Create tasks with: title, duration, color, and category
  • Edit and delete tasks from your personal task library
  • Tasks persist across sessions

🗓️ Routine Builder

  • Drag tasks from your library onto a 7-day weekly grid
  • Time-slot-based placement with visual feedback
  • Overlap detection prevents conflicting task placement on the same day

📊 Dashboard

  • View all saved routines at a glance
  • Quick access to edit or delete any routine
  • Summary stats for your weekly schedule

♻️ Routine Templates

  • Save any routine as a reusable template
  • Re-apply templates to any week in seconds

🏗 Tech Stack

Frontend

Technology Purpose
React 19 UI framework
Vite Build tool & dev server
Tailwind CSS v4 Utility-first styling
@dnd-kit/core Drag-and-drop interactions
Axios HTTP client for API calls
React Router DOM v7 Client-side routing
Lucide React Icon library
Context API Global auth state management

Backend

Technology Purpose
Node.js Runtime environment
Express.js v5 REST API framework
MongoDB Atlas Cloud database
Mongoose v9 ODM for MongoDB
JSON Web Token (JWT) Stateless authentication
Bcrypt Password hashing
dotenv Environment variable management
Nodemon Dev server with hot-reload

📂 Project Structure

DailyForge/
│
├── backend/
│   ├── config/                 # DB connection config
│   ├── controllers/
│   │   ├── authController.js   # Signup, login logic
│   │   ├── routineController.js
│   │   └── taskController.js
│   ├── middlewares/
│   │   └── authMiddleware.js   # JWT verification
│   ├── routes/
│   │   ├── authRoutes.js
│   │   ├── routineRoutes.js
│   │   └── taskRoutes.js
│   ├── src/
│   │   ├── models/             # Mongoose schemas
│   │   │   ├── User.model.js
│   │   │   ├── Task.model.js
│   │   │   └── Routine.model.js
│   │   └── server.js           # Express app entry point
│   ├── .env                    # ← You create this (see below)
│   └── package.json
│
└── frontend/
    ├── public/
    ├── src/
    │   ├── api/
    │   │   └── axiosConfig.js  # Axios base URL config
    │   ├── components/
    │   │   ├── Dashboard/
    │   │   ├── Routine/
    │   │   ├── Task/
    │   │   ├── Navbar.jsx
    │   │   └── ProtectedRoutes.jsx
    │   ├── context/
    │   │   └── AuthContext.jsx
    │   ├── hooks/
    │   │   └── useTasks.js
    │   ├── pages/
    │   │   ├── Dashboard.jsx
    │   │   ├── RoutineBuilder.jsx
    │   │   ├── Tasks.jsx
    │   │   ├── Login.jsx
    │   │   └── Signup.jsx
    │   ├── utils/
    │   ├── App.jsx
    │   └── main.jsx
    ├── index.html
    ├── vite.config.js
    └── package.json

⚡ Quick Start

Prerequisites: Node.js v18+, npm v9+, a free MongoDB Atlas account

1. Clone the repository

git clone https://github.com/aryandas2911/DailyForge.git
cd DailyForge

2. Set up the Backend

cd backend
npm install

Create your .env file from the given template (see the Environment Variables section below):

# Inside the /backend directory

cp .env.example .env   

Then fill in your values (see the next section for what each variable means).

⚠️ Local dev note: The backend CORS origin is already configured for both the deployed frontend (https://dailyforge-frontend-lhjq.onrender.com) and local development (http://localhost:5173) in backend/src/server.js. No changes are needed for local development.

Start the backend dev server:

npm run dev

✅ Server should start at http://localhost:5000


3. Set up the Frontend

Open a new terminal, then:

cd frontend
npm install

💡 Local dev note: To point the frontend to your local backend, copy frontend/.env.example to frontend/.env and ensure VITE_API_URL is set to http://localhost:5000/api.

Start the frontend dev server:

npm run dev

✅ App should open at http://localhost:5173


✅ You're ready!

Open http://localhost:5173, sign up for an account, and start building your routines.


🔐 Environment Variables

Backend — backend/.env

Copy the provided template to get started. Never commit the .env to git.

PORT=5000
MONGO_URI=your_mongodb_atlas_connection_string
JWT_SECRET=your_super_secret_key_here
#CLIENT_ORIGIN=your_deployed_frontend_url
Variable Required Description
PORT Port on which the Express server runs (default: 5000)
MONGO_URI Full MongoDB Atlas connection string — get it from your Atlas cluster's "Connect" menu
JWT_SECRET Secret key for signing JWTs — use any long, random string (e.g., openssl rand -hex 32)
CLIENT_ORIGIN (Optional) Allowed CORS origin for API requests. Set this to your production frontend URL (e.g., https://dailyforge-frontend-lhjq.onrender.com). If not set, it defaults to http://localhost:5173 for local development.

How to get MONGO_URI:

  1. Log into MongoDB Atlas
  2. Create a free M0 cluster (if you haven't)
  3. Click ConnectConnect your application → Copy the connection string
  4. Replace <password> with your DB user's password

Frontend — frontend/.env

Copy the provided .env.example to a new file named .env.

Running locally? Update VITE_API_URL in your local .env file to http://localhost:5000/api/.


❓ FAQ

Why is the app slow on first load?

The project is deployed on Render’s free tier. Services may go to sleep after inactivity, so the first request can take around 30–60 seconds to respond.


Which Node.js version should I use?

Recommended versions:

  • Node.js v18+
  • npm v9+

Check your installed versions:

node -v
npm -v

Do I need MongoDB installed locally?

No. DailyForge uses MongoDB Atlas, so you only need a free Atlas account and a valid connection string.


Why am I getting CORS errors during local development?

Make sure:

  • Backend CORS origin is set to:
origin: "http://localhost:5173"
  • Frontend .env contains:
VITE_API_URL=http://localhost:5000/api

Where should I add environment variables?

Backend variables go inside:

/backend/.env

Frontend variables go inside:

/frontend/.env

🛠 Troubleshooting

MongoDB Connection Error

Error Example

MongooseServerSelectionError

Possible Fixes

  • Verify your MONGO_URI
  • Check your database username/password
  • Ensure your IP address is whitelisted in MongoDB Atlas

Frontend Cannot Connect to Backend

Possible Causes

  • Backend server is not running
  • Incorrect VITE_API_URL
  • Port mismatch

Fix Ensure:

VITE_API_URL=http://localhost:5000/api

And confirm the backend is running on:

http://localhost:5000

JWT Authentication Errors

Fix

  • Ensure JWT_SECRET is present in backend/.env
  • Restart the backend server after updating environment variables

Port Already in Use

Error Example

EADDRINUSE

Fix Stop the running process using the port or change the port value in .env.

Example:

PORT=5001

Dependencies Not Installing Properly

Try removing old dependencies and reinstalling:

rm -rf node_modules package-lock.json
npm install

🤝 Contribution Guidelines

We love contributions! DailyForge is actively participating in GSSoC 2026 and welcomes contributors of all experience levels.

📄 Read the full guidelines: CONTRIBUTING.md

Quick Contribution Flow

1. Pick an issue

  • Browse open issues
  • Look for good first issue if you're new
  • Comment on the issue to get it assigned before starting work

2. Fork & branch

git clone https://github.com/<your-username>/DailyForge.git
cd DailyForge
git checkout -b <type>/<short-description>

Branch naming convention:

Type Example
New feature feature/add-dark-mode
Bug fix fix/login-redirect-loop
Documentation docs/update-readme
Refactor refactor/task-hook-cleanup

3. Make your changes

  • Keep changes focused — one issue per PR
  • Follow the existing code style
  • Test your changes locally before pushing

4. Open a Pull Request

  • Fill out the PR template completely
  • Link the issue it resolves using Closes #<issue-number>
  • Request a review from a maintainer

⚠️ PRs without a linked issue or description will not be reviewed.


🏷 Issue Guidelines

We use labels to organize work. Here's what they mean:

Label Meaning
good first issue Small, well-scoped tasks — perfect for first-time contributors
bug Something is broken or behaving incorrectly
feature New functionality to be added
documentation Improvements to README, guides, or inline comments
help wanted Maintainers need external input or assistance
testing Adding or improving test coverage

Tips for new contributors:

  • Start with good first issue — they're designed to be approachable
  • Don't hesitate to ask questions in the issue comments
  • One issue at a time — don't take on multiple issues until your first PR is merged

📸 Screenshots

🔐 Signup Page

Signup Page

📊 Dashboard Overview

Dashboard

📋 Tasks Page

Tasks Page

🗓️ Drag-and-Drop Routine Builder

Routine Builder


📬 Getting Help

Need help with setup or contributing?

You can:

  • Open a GitHub Issue
  • Comment on an existing issue for clarification
  • Contact the maintainer through the email provided below

Before asking for help:

  • Read the setup instructions carefully
  • Check the FAQ and Troubleshooting sections
  • Search existing GitHub issues first

We welcome contributors of all experience levels 🚀


📬 Contact & Community

Have questions, ideas, or want to connect with other contributors?

Channel Link
📧 Email aryandas2911@gmail.com
🐛 Issues GitHub Issues

Built with ❤️ for GSSoC 2026

If DailyForge helped you, consider giving it a ⭐ — it helps more contributors find the project!

About

DailyForge is an open-source fullstack MERN productivity app that lets you design, manage, and visualize your weekly routines - with drag-and-drop scheduling, a smart task library, and overlap protection built right in.

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • JavaScript 97.7%
  • CSS 1.7%
  • HTML 0.6%