NEEON is a modern, full-stack blog platform built with React, Node.js, Express, and MongoDB. It provides a complete solution for content creation, management, and presentation with both user-facing and admin interfaces.
- Browse Content: Beautifully designed landing page with featured posts
- Category Browsing: Filter posts by categories
- Interactive Posts: Like and comment on posts
- Contact Form: Reach out to the blog administrators
- Responsive Design: Works seamlessly on all devices
- Google OAuth: Secure authentication with Google
- Dark/Light Theme: Toggle between different themes
- Dashboard Analytics: Real-time statistics and insights
- Content Management: Create, edit, and delete posts
- User Management: View and manage registered users
- Comment Moderation: Review and manage comments
- Category Management: Organize content with categories
- Post Analytics: Track views and engagement
- Authentication & Authorization: JWT-based security
- File Upload: Support for images and other media
- API Documentation: RESTful API endpoints
- Performance Optimized: Fast loading and smooth interactions
- SEO Friendly: Proper meta tags and structure
- React 19.1.1 - Modern JavaScript library for building user interfaces
- React Router DOM 7.9.4 - Declarative routing for React
- Vite 7.1.6 - Next-generation frontend build tool
- CSS Modules - Scoped CSS for components
- JWT Decode - Decoding JWT tokens in the browser
- Recharts - Charting library for analytics
- React Icons - SVG icon library
- Node.js - JavaScript runtime environment
- Express 5.1.0 - Web application framework
- MongoDB - NoSQL database
- Mongoose 8.18.1 - MongoDB object modeling
- Passport.js - Authentication middleware (Google OAuth)
- JSON Web Tokens - Secure token-based authentication
- bcrypt - Password hashing
- Multer - File upload handling
- Dotenv - Environment variable management
- ESLint - Code linting
- Cors - Cross-Origin Resource Sharing
- Validator - String validation
NEEON/
βββ backend/ # Server-side code
β βββ config/ # Configuration files
β βββ controllers/ # Business logic
β βββ models/ # Database schemas
β βββ routes/ # API routes
β βββ uploads/ # File uploads storage
β βββ utils/ # Utility functions
β βββ app.js # Express app configuration
β βββ server.js # Server entry point
β βββ package.json # Backend dependencies
βββ frontend/ # Client-side code
β βββ public/ # Static assets
β βββ src/ # Source code
β β βββ components/ # Reusable UI components
β β βββ context/ # React context providers
β β βββ hooks/ # Custom React hooks
β β βββ pages/ # Page components
β β βββ routes/ # Route definitions
β β βββ utils/ # Utility functions
β β βββ App.jsx # Main application component
β β βββ main.jsx # Application entry point
β βββ package.json # Frontend dependencies
β βββ vite.config.js # Vite build configuration
βββ README.md # This file
-
Clone the repository
git clone https://github.com/devasol/NEEON.git cd NEEON -
Install backend dependencies
cd backend npm install -
Install frontend dependencies
cd ../frontend npm install -
Set up environment variables
In the
backenddirectory, create a.envfile with the following variables based onconfig.env.example:# Database Configuration DATABASE_URL=mongodb+srv://<username>:<password>@cluster.mongodb.net/neeon_db # Server Configuration PORT=9000 NODE_ENV=development # Security Configuration JWT_SECRET=your_super_secret_jwt_key_here JWT_EXPIRES_IN=90d # Google OAuth Configuration GOOGLE_CLIENT_ID=your_google_client_id GOOGLE_CLIENT_SECRET=your_google_client_secret # Session Configuration SESSION_SECRET=your_session_secret # Application URLs FRONTEND_URL=http://localhost:5173 BACKEND_URL=http://localhost:9000 # Email Configuration (optional) EMAIL=your_email@gmail.com EMAIL_PASSWORD=your_app_password
-
Run the application
-
Start the backend server:
cd backend npm start -
Start the frontend development server:
cd frontend npm run dev
The frontend will be available at
http://localhost:5173and the backend API athttp://localhost:9000. -
npm run dev- Start development servernpm run build- Build for productionnpm run preview- Preview production buildnpm run lint- Run ESLint
npm start- Start server with nodemon
POST /api/v1/users/signup- User registrationPOST /api/v1/users/login- User loginPOST /api/v1/users/logout- User logoutGET /auth/google- Google OAuth loginGET /auth/google/callback- Google OAuth callback
GET /api/v1/blogs- Get all postsGET /api/v1/blogs/:id- Get specific postPOST /api/v1/blogs- Create new post (Admin only)PATCH /api/v1/blogs/:id- Update post (Admin only)DELETE /api/v1/blogs/:id- Delete post (Admin only)GET /api/v1/blogs/public- Get public postsGET /api/v1/blogs/:id/comments- Get comments for post
GET /api/categories- Get all categoriesPOST /api/categories- Create category (Admin only)PATCH /api/categories/:id- Update category (Admin only)DELETE /api/categories/:id- Delete category (Admin only)
GET /api/v1/analytics/dashboard-stats- Dashboard statisticsGET /api/v1/analytics/recent-posts- Recent posts dataGET /api/v1/analytics/users- User analytics
POST /api/contact- Submit contact form
The application uses JWT (JSON Web Tokens) for authentication. Admin users have special permissions to manage content.
OAuth with Google is also supported for easy registration and login.
_id: ObjectIdemail: Stringpassword: String (hashed)name: String (optional)role: String (user/admin)googleId: String (optional)
_id: ObjectIdnewsTitle: StringnewsDescription: Stringcategory: StringpostedBy: StringdatePosted: Dateimage: String (file path)likes: Numbercomments: Array of comment objectsviews: Numberpublished: Boolean
_id: ObjectIdname: Stringdescription: String (optional)
The admin dashboard provides comprehensive management tools:
- Analytics: View statistics on posts, users, and engagement
- Content Management: Create, edit, and delete posts
- User Management: View and manage registered users
- Comment Moderation: Review and manage comments
- Category Management: Organize content categories
- System Settings: Configure platform settings
- Fork the project
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
Distributed under the MIT License. See LICENSE for more information.
Project Link: https://github.com/devasol/NEEON
- React community for the amazing library
- Express.js for the robust framework
- MongoDB for the scalable database
- All the open-source packages that made this project possible
Made with Dawit S. using React, Node.js, and MongoDB
