-
Notifications
You must be signed in to change notification settings - Fork 0
Project Goals
Shubham edited this page Jan 20, 2026
·
2 revisions
Welcome to the team! This roadmap is designed to take SCNOTES from a basic local-storage app to a full-stack, professional note-taking platform.
Focus: User Experience (UX), Modern Design, and State Management.
- Goal: Transition from Vanilla HTML/CSS to a modern framework.
-
Tasks:
- Initialize the project using Vite + React.
- Setup Tailwind CSS for styling.
- Design a "Clean & Minimalist" layout with a sidebar for categories and a main area for notes.
-
Hints:
- Use Lucide React for high-quality icons.
- Focus on a "Mobile-First" responsive design.
- Goal: Handle how users log in and how data flows through the app.
-
Tasks:
- Create login and registration forms with validation.
- Implement Zustand or React Context to manage "Notes" and "User" state.
- Create "Protected Routes" (users can't see notes unless logged in).
-
Hints:
- Store the backend JWT in
localStorageor acookie. - Use
react-router-domfor navigation.
- Store the backend JWT in
- Goal: Make the app better than a simple text box.
-
Tasks:
-
Markdown Support: Use
react-markdownso users can write bold, lists, and code blocks. - Live Search: A search bar that filters notes as the user types.
- Dark Mode: A toggle for late-night note-taking.
-
Markdown Support: Use
-
Hints:
- Use a
debouncefunction for search to avoid too many re-renders. - Tailwind's
dark:modifier is your best friend here.
- Use a
- Goal: Make it feel like a premium product.
-
Tasks:
-
Animations: Use
Framer Motionfor smooth fades and slide-ins when adding/deleting notes. - PWA Support: Make the app "Installable" on phones.
- Deployment: Push to Vercel or Netlify (Free).
-
Animations: Use
-
Hints:
- Check "Vite PWA Plugin" for easy setup.
- Ensure all buttons have
hoverandactivestates for feedback.
Focus: API Architecture, Data Security, and Scalability.
- Goal: Create the "Brain" of the application.
-
Tasks:
- Setup a Node.js + Express server.
- Connect to MongoDB Atlas (Free Tier).
- Implement User Sign-up and Login using JWT (JSON Web Tokens).
-
Hints:
- Use
bcryptto hash passwords before saving them (Never save plain text!). - Use
dotenvto keep your DB credentials safe.
- Use
- Goal: Allow the frontend to save and retrieve notes.
-
Tasks:
- Create a
NoteSchema (Title, Content, Folder, CreatedAt, UserID). - Build endpoints:
GET /notes,POST /notes,PUT /notes/:id,DELETE /notes/:id. - Ensure users can only see their own notes.
- Create a
-
Hints:
- Create a
checkAuthmiddleware to verify the JWT on every request. - Log every error to the console for easier debugging.
- Create a
- Goal: Add logic for sorting and filtering.
-
Tasks:
- Tagging Logic: Allow users to add an array of tags to a note.
-
Search Endpoint: Create a
GET /notes/search?q=...using MongoDB$regex. - Pinned Notes: Logic to keep important notes at the top.
-
Hints:
- Use Mongoose
.find({ $or: [...] })for searching both titles and content.
- Use Mongoose
- Goal: Prepare for the public.
-
Tasks:
- Rate Limiting: Prevent bots from spamming your API.
- API Documentation: Write a simple README explaining how to use each endpoint.
- Deployment: Deploy to Render.com (Free tier).
-
Hints:
- Use
corspackage to allow your frontend to talk to your backend. - Render's free tier "sleeps" after inactivity—mention this in your docs!
- Use
Focus: High-Performance APIs, Type Safety, and Scalable Data.
- Goal: Setup the FastAPI server and handle User security.
-
Tasks:
- Initialize a virtual environment (
venv) and installfastapi,uvicorn, andmotor(for MongoDB). - Connected to MongoDB Atlas (Free Tier).
- Implement User Sign-up and Login using OAuth2 + JWT.
- Initialize a virtual environment (
-
Hints:
- Use
Passlibwithbcryptfor password hashing. - FastAPI has built-in support for security—check the "Security" section in the docs!
- Use
- Goal: Build the core endpoints for note management.
-
Tasks:
- Define Pydantic Models for
NoteandUser. - Build endpoints:
GET /notes,POST /notes,PUT /notes/{id},DELETE /notes/{id}. - Implement a "Dependency" to extract the current user from the JWT token.
- Define Pydantic Models for
-
Hints:
- Use
Annotated[User, Depends(get_current_user)]to protect your routes.
- Use
- Goal: Advanced data retrieval and connections.
-
Tasks:
-
Full-Text Search: Implement a search endpoint using MongoDB's
$textindex. -
Slack Integration: Create a
POST /notes/{id}/shareendpoint. -
Pinned Logic: Create a boolean field
is_pinnedand sort results by it.
-
Full-Text Search: Implement a search endpoint using MongoDB's
-
Hints:
- Use the
httpxlibrary in Python to send the POST request to Slack's API.
- Use the
- Goal: Finalize and go live.
-
Tasks:
- Middleware: Setup CORS Middleware.
-
Optimization: Ensure all DB calls are
async. - Deployment: Deploy to Render.com or Railway.app.
-
Hints:
- Every FastAPI app comes with
/docsautomatically!
- Every FastAPI app comes with
- Frontend: Vercel (Hosting), Figma (Design).
- Backend: Render (Hosting), MongoDB Atlas (Database).
- Testing: Postman (Testing APIs).
- Communication: Slack: Notes-App Channel