- Rich Post Creation - Create detailed posts about anime, manga, and other media
- Category Organization - Organize content with customizable categories
- Tag System - Tag posts for easy discovery and filtering
- Image Support - Upload and manage multiple images per post
- Draft System - Save drafts and publish when ready
- Google OAuth Integration - Seamless login with Google accounts
- Role-Based Access Control - Admin, Editor, and Viewer roles
- JWT Authentication - Secure token-based authentication
- User Management - Admin dashboard for user administration
- View Tracking - Automatic view counting for posts
- Like System - Community engagement features
- Reading Time - Automatic reading time calculation
- SEO Optimization - Auto-generated slugs and excerpts
- RESTful API - Well-documented API with comprehensive endpoints
- Automated Backups - Scheduled database backups with cloud storage
- Comprehensive Logging - Structured logging with Pino
- Migration System - Database migration tools for updates
- CLI Tools - Command-line utilities for administration
- Responsive Design - Mobile-first responsive interface
- Dark Theme - Beautiful dark theme with glassmorphism effects
- Infinite Scroll - Smooth pagination with load-more functionality
- Real-time Updates - Dynamic content updates
- Accessibility - WCAG compliant interface
- Node.js 18+
- MongoDB 4.4+
- npm or yarn
OR
- Docker & Docker Compose (recommended for easy setup)
The easiest way to get started is using Docker:
-
Clone the repository
git clone https://github.com/mohitahlawat2001/AniNotion.git cd AniNotion -
Set up environment variables
# Backend environment cp aninotion-backend/.env.example aninotion-backend/.env # Frontend environment cp aninotion-frontend/.env.example aninotion-frontend/.env
-
Configure your environment
Edit
aninotion-backend/.envwith your actual credentials:- JWT_SECRET
- Google OAuth credentials (optional for basic functionality)
- Cloudinary credentials (optional for image uploads)
- Other API keys as needed
Note: The application will work with placeholder values from
.env.example, but some features may be limited. -
Start the application with Docker
docker compose up -d
This will:
- Start MongoDB container
- Build and start the backend API (http://localhost:5000)
- Build and start the frontend (http://localhost:5173)
-
Initialize the database (first time only)
docker compose exec backend npm run seed docker compose exec backend npm run migrate:v0.5
-
Access the application
- Frontend: http://localhost:5173
- Backend API: http://localhost:5000/api
- MongoDB: localhost:27017
Docker Commands:
# Stop all containers
docker compose down
# Stop and remove all volumes (database will be reset)
docker compose down -v
# View logs
docker compose logs -f
# Rebuild containers after code changes
docker compose up -d --build
# Execute commands in containers
docker compose exec backend npm run health
docker compose exec backend npm run backup-
Clone the repository
git clone https://github.com/mohitahlawat2001/AniNotion.git cd AniNotion -
Install dependencies
npm install
-
Set up environment variables
# Backend environment cp aninotion-backend/.env.example aninotion-backend/.env # Frontend environment cp aninotion-frontend/.env.example aninotion-frontend/.env
-
Configure your environment
Edit
aninotion-backend/.env:MONGODB_URI=mongodb://localhost:27017/aninotion JWT_SECRET=your-super-secret-jwt-key GOOGLE_CLIENT_ID=your-google-client-id GOOGLE_CLIENT_SECRET=your-google-client-secret CLOUDINARY_CLOUD_NAME=your-cloudinary-name CLOUDINARY_API_KEY=your-cloudinary-key CLOUDINARY_API_SECRET=your-cloudinary-secret
-
Initialize the database
npm run seed npm run migrate:v0.5
-
Start the development servers
npm run dev
This starts both frontend (http://localhost:5173) and backend (http://localhost:5000)
aninotion-app/
βββ π aninotion-frontend/ # React frontend application
β βββ π src/
β β βββ π components/ # Reusable UI components
β β βββ π pages/ # Page components
β β βββ π context/ # React context providers
β β βββ π hooks/ # Custom React hooks
β β βββ π services/ # API service layer
β βββ π docs/ # Frontend documentation
β βββ π package.json
βββ π aninotion-backend/ # Node.js backend API
β βββ π config/ # Configuration files
β βββ π models/ # MongoDB models
β βββ π routes/ # API route handlers
β βββ π middleware/ # Express middleware
β βββ π utils/ # Utility functions
β βββ π scripts/ # CLI and maintenance scripts
β βββ π docs/ # API documentation
β βββ π package.json
βββ π .github/ # GitHub templates and workflows
β βββ π ISSUE_TEMPLATE/ # Issue templates
β βββ π PULL_REQUEST_TEMPLATE/ # PR templates
βββ π package.json # Root package.json
βββ π README.md # This file
βββ π CONTRIBUTING.md # Contribution guidelines
npm run dev- Start both frontend and backend in development modenpm run server- Start only the backend servernpm run client- Start only the frontend clientnpm run seed- Seed the database with initial datanpm run lint- Run ESLint on the entire codebasenpm run format- Format code with Prettier
npm run start- Start the backend servernpm run migrate- Run database migrationsnpm run backup- Create a database backupnpm run health- Check system healthnpm run test:oauth- Test OAuth endpoints
npm run build- Build for productionnpm run preview- Preview production buildnpm run lint- Run ESLint on frontend code
The API is fully documented and follows RESTful conventions. Key endpoints include:
POST /api/auth/login- User loginPOST /api/auth/register- User registration (Admin only)GET /api/auth/me- Get current user
GET /api/posts- List posts with pagination and filteringPOST /api/posts- Create new post (Auth required)GET /api/posts/:id- Get single postPUT /api/posts/:id- Update post (Auth required)DELETE /api/posts/:id- Delete post (Auth required)
GET /api/categories- List all categoriesPOST /api/categories- Create category (Admin only)
For complete API documentation, see API_V0.5.md
AniNotion supports multiple authentication methods:
- Google OAuth 2.0 - Primary authentication method
- Local Authentication - Email/password for admin accounts
- JWT Tokens - Secure session management
- Admin - Full system access and user management
- Editor - Create, edit, and manage own content
- Viewer - Read-only access to published content
- React 19 - Modern React with latest features
- Vite - Lightning-fast build tool
- TailwindCSS 4 - Utility-first CSS framework
- React Router - Client-side routing
- Axios - HTTP client for API calls
- Lucide React - Beautiful icon library
- Node.js - JavaScript runtime
- Express 5 - Web application framework
- MongoDB - NoSQL database
- Mongoose - MongoDB object modeling
- Passport.js - Authentication middleware
- JWT - JSON Web Tokens for auth
- Pino - High-performance logging
- Cloudinary - Image storage and processing
- Docker - Containerization for easy deployment
- Docker Compose - Multi-container orchestration
- Husky - Git hooks for code quality
- lint-staged - Run linters on staged files
- ESLint - JavaScript linting
- Prettier - Code formatting
- Nodemon - Development server auto-restart
We welcome contributions from developers of all skill levels! Whether you're fixing bugs, adding features, improving documentation, or helping with testing, your contributions are valued.
- Fork & Clone the repository
- Set up your development environment
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
For detailed instructions, please see our Contributing Guide which covers:
- π οΈ Development Setup - Complete environment configuration
- π Code Guidelines - Style conventions and best practices
- π§ͺ Testing - How to write and run tests
- π Pull Request Process - Step-by-step submission guide
- π Issue Reporting - How to report bugs effectively
- π¨ Design Guidelines - UI/UX contribution standards
- π Report Bugs - Help us identify and fix issues
- β¨ Suggest Features - Share ideas for new functionality
- π Improve Docs - Make our documentation better
- π§ͺ Write Tests - Increase code coverage and reliability
- π¨ Design UI/UX - Enhance user experience
- π§ Code Review - Help review pull requests
This project is licensed under the ISC License - see the LICENSE file for details.
- Anime Database API - For anime information and metadata
- Google OAuth - For secure authentication
- Cloudinary - For image storage and processing
- MongoDB Atlas - For database hosting
- Vercel - For frontend deployment
- π§ Email: support@aninotion.com
- π Issues: GitHub Issues
- π¬ Discussions: GitHub Discussions
Made with β€οΈ by the AniNotion Team
β Star this repo β’ π Report Bug β’ β¨ Request Feature