A modern, full-stack travel blog application built with React and FastAPI.
- 🎨 Modern UI - Beautiful, responsive design with dark/light mode
- 📝 Blog Management - Full CRUD operations for blog posts
- 🔐 User Authentication - JWT-based authentication system
- 🔍 Search & Filter - Advanced search functionality
- 📱 Responsive Design - Works on all devices
- ⚡ Fast Performance - Optimized with modern technologies
- React 18 - Modern React with hooks
- React Router - Client-side routing
- Framer Motion - Smooth animations
- Tailwind CSS - Utility-first styling
- React Icons - Beautiful iconography
- FastAPI - Modern Python web framework
- SQLAlchemy - Database ORM
- SQLite/PostgreSQL - Database
- JWT - Authentication
- Pydantic - Data validation
cd backend
# Install dependencies
pip3 install -r requirements.txt
# Start backend server
python3 run.py# Install dependencies
npm install
# Start frontend server
npm start- Frontend: http://localhost:3000
- Backend API: https://wanderluxe-ventures.onrender.com
- API Documentation: https://wanderluxe-ventures.onrender.com/docs
# Test health endpoint
curl https://wanderluxe-ventures.onrender.com/health
# Test root endpoint
curl https://wanderluxe-ventures.onrender.com/
# Test posts endpoint
curl https://wanderluxe-ventures.onrender.com/posts/react-blog-website/
├── src/ # React frontend
│ ├── components/ # Reusable UI components
│ ├── pages/ # Route components
│ ├── context/ # React context providers
│ └── images/ # Static images
├── backend/ # FastAPI backend
│ ├── app/
│ │ ├── routers/ # API route handlers
│ │ ├── models.py # Database models
│ │ ├── schemas.py # API schemas
│ │ └── main.py # FastAPI app
│ ├── requirements.txt # Python dependencies
│ └── run.py # Backend startup script
POST /auth/login- Login and get access tokenGET /auth/me- Get current user info
POST /users/register- Register new userGET /users/me- Get current user
GET /posts/- Get all posts (with pagination and search)GET /posts/{post_id}- Get single postPOST /posts/- Create new post (requires auth)PUT /posts/{post_id}- Update post (requires auth)DELETE /posts/{post_id}- Delete post (requires auth)POST /posts/{post_id}/like- Like a post
- Home - Landing page with hero section and featured content
- Blogs - Blog listing with search functionality
- SinglePost - Individual blog post view
- About - Company information
- Contact - Contact form
- Destination - Travel destinations showcase
- Join - Community joining form
- Navbar - Responsive navigation with dark mode toggle
- Footer - Site footer with social links
- Sidebar - Reusable sidebar component
- Article - Individual article display
- ArticleCard - Article card for listings
id- Primary keyusername- Unique usernameemail- Unique email addresshashed_password- Bcrypt hashed password
id- Primary keytitle- Post titlecontent- Post contentdescription- Post descriptionimage- Image URL/pathauthor- Author nameowner_id- Foreign key to users tablelikes- Number of likescomments- Number of commentscreated_at- Creation timestampupdated_at- Last update timestamp
To clean up the application:
# Stop servers (Ctrl+C in terminal)
# Remove Python cache
find . -name "__pycache__" -type d -exec rm -rf {} +
find . -name "*.pyc" -type f -delete
# Remove node_modules (optional)
rm -rf node_modules
# Remove database (optional)
rm -f backend/test.db- Push changes to main branch
- Vercel will auto-deploy
- Set environment variables
- Deploy using the platform's CLI
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
This project is licensed under the MIT License.
Happy Coding! 🎉