A modern, full-stack anime streaming platform built with React and Express.js, featuring a comprehensive anime database, user authentication, and administrative tools.
Anime Shadows is a complete anime streaming platform that provides users with:
- Extensive Anime Library: Browse and discover anime series and movies
- User Authentication: Secure registration and login system
- Personal Features: Favorites, watch history, and user profiles
- Search & Filter: Advanced search and filtering capabilities
- Admin Dashboard: Content management and moderation tools
- Responsive Design: Optimized for desktop and mobile devices
- Multi-language Support: Internationalization with i18next
- SEO Optimized: Server-side rendering and sitemap generation
- Frontend: React 18 with Vite, React Router, Material-UI
- Backend: Express.js with MongoDB
- Authentication: JWT-based authentication
- Database: MongoDB with Mongoose ODM
- Deployment: Netlify (Frontend) + Heroku (Backend)
- Security: Helmet, CORS, Rate limiting, XSS protection
- Node.js (v20.x or higher)
- npm or yarn
- MongoDB database
- Cloudinary account (for image storage)
git clone <repository-url>
cd anime-shadowsnpm installcd front
npm installcd ../backend
npm installCreate a .env file in the backend directory:
# Server Configuration
PORT=5000
NODE_ENV=development
# Database
MONGODB_URI=mongodb://localhost:27017/anime-shadows
# or for MongoDB Atlas:
# MONGODB_URI=mongodb+srv://username:password@cluster.mongodb.net/anime-shadows
# JWT Secret
JWT_SECRET=your-super-secret-jwt-key
# Cloudinary Configuration
CLOUDINARY_CLOUD_NAME=your-cloud-name
CLOUDINARY_API_KEY=your-api-key
CLOUDINARY_API_SECRET=your-api-secret
# CORS Configuration
CORS_ORIGIN=http://localhost:5173Create a .env file in the front directory:
# API Configuration
VITE_API_URL=http://localhost:5000/api
# Google Analytics (optional)
VITE_REACT_APP_GA_MEASUREMENT_ID=your-ga-measurement-id- Local MongoDB: Install MongoDB locally or use MongoDB Atlas
- Database Initialization: The application will automatically create collections on first run
- Admin User: Use the admin registration endpoint to create the first admin user
cd backend
npm run devThe backend server will start on http://localhost:5000
cd front
npm run devThe frontend will start on http://localhost:5173
cd front
npm run buildcd backend
npm startnpm start: Start the backend server
npm run dev: Start development servernpm run build: Build for productionnpm run preview: Preview production buildnpm run lint: Run ESLintnpm run generate-sitemap: Generate sitemap
npm start: Start production servernpm run dev: Start development server with nodemonnpm run update-slugs: Update anime slugs
http://localhost:5000/api
POST /api/user/register
Content-Type: application/json
{
"username": "string",
"email": "string",
"password": "string"
}POST /api/user/login
Content-Type: application/json
{
"email": "string",
"password": "string"
}GET /api/anime
Query Parameters:
- page: number (default: 1)
- limit: number (default: 20)
- search: string
- genre: string
- type: string
- status: stringGET /api/anime/:slugGET /api/anime/popularGET /api/episodes/anime/:animeIdGET /api/episodes/:episodeSlugGET /api/genresGET /api/typesGET /api/seasons/:year/:seasonPOST /api/admin/anime
Authorization: Bearer <token>
Content-Type: application/jsonPUT /api/admin/anime/:id
Authorization: Bearer <token>DELETE /api/admin/anime/:id
Authorization: Bearer <token>{
"success": true,
"data": {},
"message": "Success message"
}{
"success": false,
"error": {
"message": "Error message",
"code": "ERROR_CODE"
}
}- Fork the Repository: Create a fork of the project
- Create a Branch: Create a feature branch from
maingit checkout -b feature/your-feature-name
- Make Changes: Implement your feature or bug fix
- Test: Ensure all tests pass and add new tests if needed
- Commit: Use conventional commit messages
git commit -m "feat: add new anime search feature" - Push: Push your changes to your fork
- Pull Request: Create a pull request with a clear description
- Frontend: Follow React best practices and use ESLint configuration
- Backend: Follow Node.js conventions and use consistent formatting
- Commits: Use conventional commit format (feat, fix, docs, style, refactor, test, chore)
- Write clear, self-documenting code
- Add comments for complex logic
- Ensure responsive design for frontend changes
- Test API endpoints thoroughly
- Update documentation for new features
- Follow security best practices
- Use the GitHub issue tracker
- Provide detailed reproduction steps
- Include environment information
- Add screenshots for UI issues
- Open an issue with the "enhancement" label
- Describe the feature and its benefits
- Discuss implementation approach
This project is licensed under the ISC License.
Copyright (c) 2025 Anime Shadows
Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- Ensure MongoDB is running
- Check connection string in
.env - Verify network connectivity
- Update
CORS_ORIGINin backend.env - Check frontend API URL configuration
- Clear node_modules and reinstall dependencies
- Check Node.js version compatibility
- Verify environment variables
- Check JWT secret configuration
- Verify token expiration settings
- Clear browser localStorage/cookies
- Enable compression in production
- Use CDN for static assets
- Implement caching strategies
- Optimize database queries
- Use image optimization
For support and questions:
- Issues: GitHub Issues
- Documentation: Check this README and inline code comments
- Community: Join our community discussions
- Connect your GitHub repository to Netlify
- Set build command:
npm install --prefix front && npm run build --prefix front - Set publish directory:
front/dist - Configure environment variables in Netlify dashboard
- Create a new Heroku app
- Set buildpacks for Node.js
- Configure environment variables
- Deploy from GitHub or using Heroku CLI
Built with ❤️ by the Anime Shadows Team