A fullstack note-taking application with parent-child role management built with FastAPI and React.
- Role-Based Access: Parents (read-only) and Children (full CRUD)
- Parent-Child Linking: Parents can select children during signup
- Note Organization: Folders, tags, and to-do functionality
- Real-time Filtering: Parents can view specific child's notes
- Responsive Design: Clean, modern interface
- Backend: FastAPI, SQLAlchemy, SQLite, JWT Authentication
- Frontend: React.js, TypeScript, Axios
- Database: SQLite (PostgreSQL for production)
- Deployment: Vercel
- Clone Repository
git clone <repository-url>
cd NoteNext- Backend Setup
cd backend
pip install -r requirements.txt
python create_demo_data.py # Create demo data
python main.py # Start server on port 9002- Frontend Setup
cd frontend
npm install
npm start # Start on port 3000- Push to GitHub
git init
git add .
git commit -m "Initial commit"
git remote add origin <your-github-repo>
git push -u origin main- Deploy on Vercel
- Connect GitHub repository to Vercel
- Vercel will automatically detect and deploy
- Backend runs on
/apiroutes - Frontend serves from root
For production, set these in Vercel dashboard:
DATABASE_URL=<postgresql-connection-string>
SECRET_KEY=<your-secret-key>
Parents:
sunita/password123(children: ananya, ishaan)vikram/password123(children: diya, aarav)
Children:
ananya/password123ishaan/password123diya/password123aarav/password123
- Signup: Create parent account and select children
- Login: Access role-based dashboard
- Parent View: Select child to view their notes
- Child View: Full CRUD access to own notes
NoteNext/
├── backend/
│ ├── main.py # FastAPI application
│ ├── vercel_main.py # Vercel-compatible version
│ ├── database.py # SQLAlchemy models
│ ├── auth.py # JWT authentication
│ └── requirements.txt # Python dependencies
├── frontend/
│ ├── src/
│ │ ├── components/ # React components
│ │ ├── api.ts # API service layer
│ │ ├── types.ts # TypeScript interfaces
│ │ └── App.tsx # Main application
│ └── package.json # Node dependencies
├── vercel.json # Vercel configuration
└── README.md
POST /api/signup- Create user with child selectionPOST /api/login- Login with JWT tokenGET /api/available-children- Get unlinked children
GET /api/children- Get parent's childrenGET /api/folders- Get folders (filtered by role)GET /api/notes- Get notes (filtered by child/folder)POST /api/notes- Create note (children only)PUT /api/notes/{id}- Update note (children only)DELETE /api/notes/{id}- Delete note (children only)
- Parents signup and select existing children
- Children are created independently first
- Parents see only their linked children's data
- Parents: Read-only access, can view all children's content
- Children: Full CRUD access to their own content only
- Parents can select specific child from sidebar
- All folders and notes filter by selected child
- Clean UI state management
- Replace SQLite with PostgreSQL for production
- Add proper error handling and logging
- Implement rate limiting
- Add data validation and sanitization
- Set up proper environment variable management
MIT License - Feel free to use for educational purposes.
- Fork the repository
- Create feature branch
- Commit changes
- Push to branch
- Create Pull Request
Built for interview demonstration - showcases fullstack development, role-based access control, and modern deployment practices.