A comprehensive note-taking application built with Angular frontend and Node.js backend, featuring user authentication, role-based access control, AI-powered note generation, and real-time collaboration.
- Frontend: https://note-app-frontend-diim.onrender.com
- Backend API: https://note-app-backend-d01m.onrender.com
- Framework: Angular 16
- Styling: SCSS + Tailwind CSS
- Charts: Chart.js + ng2-charts
- Icons: Material Icons
- State Management: RxJS Observables
- Runtime: Node.js
- Framework: Express.js
- Database: MongoDB
- Authentication: JWT (JSON Web Tokens)
- AI Integration: Google Gemini AI
- Security: bcryptjs for password hashing
Note-App/
βββ Backend/ # Node.js Backend
β βββ config/ # Configuration files
β βββ controllers/ # Route controllers
β βββ middleware/ # Authentication & authorization
β βββ models/ # MongoDB models
β βββ routes/ # API routes
β βββ services/ # Business logic services
β βββ tests/ # Test files
β βββ server.js # Main server file
βββ Frontend/ # Angular Frontend
β βββ src/
β β βββ app/
β β β βββ components/ # Angular components
β β β βββ services/ # Angular services
β β β βββ guards/ # Route guards
β β β βββ interceptors/ # HTTP interceptors
β β βββ environments/ # Environment configurations
β β βββ assets/ # Static assets
β βββ angular.json # Angular configuration
βββ README.md # This file
- User registration and login
- JWT-based authentication
- Role-based access control (Admin, User)
- Protected routes with auth guards
- Session management with token validation
- Create, read, update, and delete notes
- Rich text editing capabilities
- Note categorization and tagging
- Search and filter functionality
- Note archiving and restoration
- AI note generation using Google Gemini
- Content enhancement and suggestions
- Multiple tone options (Professional, Casual, Academic, Creative)
- Various output formats (Structured, Bullet points, Paragraphs, Outlines)
- User profile management
- Role assignment and management
- User activity tracking
- Admin dashboard for user oversight
- User engagement metrics
- Note creation statistics
- System usage analytics
- Interactive charts and graphs
- Note sharing between users
- Collaborative editing
- Permission management
- Activity tracking
- Node.js (v18 or higher)
- MongoDB (local or cloud)
- Angular CLI
- Git
-
Clone the repository
git clone https://github.com/Surya07102000/Note-App.git cd Note-App/Backend -
Install dependencies
npm install
-
Environment Configuration Create a
.envfile in the Backend directory:PORT=5000 NODE_ENV=development MONGO_URI=mongodb://localhost:27017/notes_app JWT_SECRET=your-super-secret-jwt-key JWT_EXPIRATION=24h GEMINI_API_KEY=your-gemini-api-key
-
Start the server
npm start # or for development npm run dev
-
Navigate to Frontend directory
cd ../Frontend -
Install dependencies
npm install
-
Environment Configuration Update
src/environments/environment.ts:export const environment = { production: false, apiUrl: 'http://localhost:5000/api' };
-
Start the development server
ng serve
-
Open your browser Navigate to
http://localhost:4200
POST /api/auth/register- User registrationPOST /api/auth/login- User loginGET /api/auth/validate- Token validation
GET /api/notes- Get all notesPOST /api/notes- Create new noteGET /api/notes/:id- Get specific notePUT /api/notes/:id- Update noteDELETE /api/notes/:id- Delete notePOST /api/notes/:id/share- Share note
GET /api/users- Get all users (Admin only)GET /api/users/:id- Get user profilePUT /api/users/:id- Update user profileDELETE /api/users/:id- Delete user (Admin only)
GET /api/roles- Get all rolesPOST /api/roles- Create role (Admin only)PUT /api/roles/:id- Update role (Admin only)DELETE /api/roles/:id- Delete role (Admin only)
GET /api/analytics/dashboard- Get dashboard analyticsGET /api/analytics/users- Get user analyticsGET /api/analytics/notes- Get note analytics
POST /api/ai/generate- Generate AI contentPOST /api/ai/enhance- Enhance existing contentPOST /api/ai/template- Generate from template
cd Backend
npm testcd Frontend
ng test- Connect your GitHub repository to Render
- Set environment variables in Render dashboard
- Deploy automatically on git push
- Create a new Static Site in Render
- Connect to your GitHub repository
- Set build command:
cd Frontend && npm install && npm run build - Set publish directory:
Frontend/dist/frontend
PORT=5000
NODE_ENV=production
MONGO_URI=your-mongodb-connection-string
JWT_SECRET=your-jwt-secret-key
JWT_EXPIRATION=24h
GEMINI_API_KEY=your-gemini-api-key// environment.ts (development)
export const environment = {
production: false,
apiUrl: 'http://localhost:5000/api'
};
// environment.prod.ts (production)
export const environment = {
production: true,
apiUrl: 'https://note-app-backend-d01m.onrender.com/api'
};- Admin: Full system access, user management, analytics
- User: Note management, basic features
- Rich text editing
- AI-powered content generation
- Note sharing and collaboration
- Search and filtering
- Categories and tags
- JWT authentication
- Password hashing with bcrypt
- Role-based access control
- CORS protection
- Input validation
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
Surya Kanta Nag
- GitHub: @Surya07102000
- Email: suryakantanag05@gmail.com
- Angular team for the amazing framework
- Express.js community
- MongoDB for the database solution
- Google Gemini AI for AI capabilities
- Render for hosting services
If you have any questions or need help, please:
- Check the Issues page
- Create a new issue if your problem isn't already addressed
- Contact the author via email
β Star this repository if you found it helpful!