A modern, beautiful note-taking application built with Next.js and Firebase. Simple, secure, and designed for productivity.
π Live Demo: humble-notes.vercel.app
- Modern UI/UX - Clean, intuitive interface inspired by modern design principles
- Dark/Light Mode - Automatic theme detection with manual toggle
- Responsive Design - Works perfectly on desktop, tablet, and mobile
- Real-time Updates - Instant UI feedback as you type
- Triple Authentication - Google, GitHub, or Email/Password
- User Data Isolation - Each user can only access their own notes
- Firestore Security Rules - Server-side data protection
- Password Reset - Secure password recovery functionality
- Environment Variables - No hardcoded secrets
- Auto-generated Titles - Titles automatically created from note content
- Real-time Auto-save - Notes save automatically as you type
- Quick Notes - Fast note creation from dashboard
- Recent Notes - Easy access to your latest work
- Note Statistics - Track your note-taking activity
- Next.js 15 - Latest framework with App Router
- Vercel Speed Insights - Built-in performance monitoring
- Optimized Loading - Fast page loads and smooth interactions
- Error Handling - Graceful error states and user feedback
| Technology | Version | Purpose |
|---|---|---|
| Next.js | 15.5.0 | React framework with App Router |
| React | 19.1.0 | UI library |
| Firebase | 12.1.0 | Authentication & Database |
| Firestore | - | NoSQL cloud database |
| Tailwind CSS | 4.0 | Utility-first CSS framework |
| Vercel | - | Deployment & hosting |
- Node.js 18+
- Firebase project with Authentication and Firestore
- Git
git clone https://github.com/cyberdime-dev/humble-notes.git
cd humble-notesnpm install- Go to Firebase Console
- Create a new project
- Enable Google Authentication in Authentication β Sign-in method
- Enable GitHub Authentication in Authentication β Sign-in method
- Enable Email/Password in Authentication β Sign-in method
- Create a Firestore Database in production mode
- Go to Project Settings β General
- Scroll down to "Your apps" section
- Click the web icon (</>) to add a web app
- Copy the configuration object
Create a .env.local file in the root directory:
NEXT_PUBLIC_FIREBASE_API_KEY=your_api_key_here
NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=your_project.firebaseapp.com
NEXT_PUBLIC_FIREBASE_PROJECT_ID=your_project_id
NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET=your_project.appspot.com
NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=your_sender_id
NEXT_PUBLIC_FIREBASE_APP_ID=your_app_idDeploy the security rules from firestore.rules to your Firebase project:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /notes/{noteId} {
allow read, write, delete: if request.auth != null &&
request.auth.uid == resource.data.userId;
allow create: if request.auth != null &&
request.auth.uid == request.resource.data.userId;
}
}
}Create a composite index in Firebase Console:
- Collection:
notes - Fields:
userId(Ascending)updatedAt(Descending)
npm run devOpen http://localhost:3000 to see your app!
- Sign In/Sign Up - Choose Google, GitHub, or create an email/password account
- Create Notes - Use the "+" button or "Quick Note" feature
- Start Writing - Type in the textarea, titles auto-generate from first line
- Organize - View recent notes and track your activity
- Dashboard - Overview of your notes and quick actions
- Note Editor - Full-featured editor with auto-save
- Sidebar - Quick access to all your notes
- Theme Toggle - Switch between light and dark modes
- Authentication - Google OAuth, GitHub OAuth, or Email/Password with password reset
-
Push to GitHub
git add . git commit -m "Initial commit" git push origin main
-
Connect to Vercel
- Go to Vercel
- Import your GitHub repository
- Add environment variables in Vercel dashboard
- Deploy!
Make sure to add all Firebase environment variables to your production environment in Vercel.
npm run dev # Start development server
npm run build # Build for production
npm run start # Start production server
npm run lint # Run ESLinthumble-notes/
βββ src/
β βββ app/ # Next.js App Router
β β βββ page.js # Landing page
β β βββ notes/ # Notes application
β β βββ layout.js # Root layout
β βββ contexts/ # React contexts
β βββ services/ # Firebase services
β βββ lib/ # Utilities
βββ public/ # Static assets
βββ firestore.rules # Firestore security rules
- Authentication Required - All operations require valid user session
- Data Isolation - Users can only access their own notes
- Server-side Validation - Firestore security rules enforce access control
We welcome contributions! Please follow these steps:
- Fork the repository
- Create a feature branch
git checkout -b feature/amazing-feature
- Make your changes
- Test thoroughly
- Submit a pull request
- Follow existing code style
- Add tests for new features
- Update documentation as needed
- Ensure all tests pass
This project is licensed under the MIT License - see the LICENSE file for details.
- Team Treehouse - For providing the excellent tutorial that inspired this project
- John Norris - Student of Treehouse and creator of Humble Notes
- Next.js Team - For the amazing React framework
- Firebase Team - For the powerful backend services
- Tailwind CSS - For the utility-first CSS framework
- Vercel - For seamless deployment and hosting
- Issues - GitHub Issues
- Discussions - GitHub Discussions
- Email - info@cyberdime.io