Skip to content

aryandas2911/DailyForge

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

94 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


πŸš€ 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 currently configured for the deployed frontend in backend/src/server.js.
When running the frontend locally on http://localhost:5173, update the CORS origin temporarily for local development.

Change this:

origin: "https://dailyforge-frontend-lhjq.onrender.com"

to:

origin: "http://localhost:5173"

before starting the backend server.

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 Connect β†’ Connect 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 .env

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


🀝 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 hands
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

Dashboard

πŸ“‹ Tasks Page

Tasks Page

πŸ—“οΈ Routine Builder

Routine Builder


πŸ“¬ 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