Roamio is your ultimate travel companion platform that makes exploring the world effortless, personalized, and inspiring. Built with Go and Gin framework, it provides tools for creating travel itineraries, connecting with fellow travelers, and discovering authentic travel experiences.
- π Itinerary Management: Create, share, and discover detailed travel itineraries
- π₯ Social Travel Network: Follow users and states, build travel communities
- π¬ Interactive Comments: Engage with travel posts and share experiences
- π Travel Analytics: Top states and users by followers
- π User Authentication: Secure registration and login system
- π± Profile Management: Customizable user profiles with photo uploads
- π State-based Discovery: Explore destinations by US states
| Component | Technology |
|---|---|
| Language | Go 1.18+ |
| Framework | Gin Web Framework |
| ORM | GORM |
| Database | SQLite |
| Documentation | Swagger/OpenAPI |
| Port | 8080 |
- Go 1.18 or higher
- SQLite3
- Python (for data generation scripts)
git clone https://github.com/Nirvisha82/Roamio.git
cd roamiogo mod downloadCreate a .env file in the root directory:
# Frontend Configuration
FRONTEND_PORT=3000
# Database Configuration
DB_PATH=roamioDB.db
# API Configuration
API_BASE_URL=http://localhost:8080The database will be automatically created when you first run the application.
go run main.goThe application will be accessible at http://localhost:8080
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
β Frontend β β Gin Router β β Handlers β
β (Port 3000) ββββββΆβ (Port 8080) ββββββΆβ Layer β
β β β β β β
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
β
βΌ
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
β SQLite DB β β GORM ORM β β Services β
β ββββββ ββββββ Layer β
β β β β β β
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
| Method | Endpoint | Description |
|---|---|---|
GET |
/itineraries |
Get all itineraries |
POST |
/itineraries |
Create new itinerary |
GET |
/itineraries/user/:userID |
Get user's itineraries |
GET |
/itineraries/state/:statecode |
Get state itineraries |
GET |
/itineraries/post/:postID |
Get specific itinerary |
GET |
/itineraries/top-states |
Get top states by followers |
| Method | Endpoint | Description |
|---|---|---|
GET |
/users |
Get all users |
POST |
/users/register |
User registration |
POST |
/users/login |
User authentication |
POST |
/users/follow |
Follow user/state |
GET |
/users/followers/:type/:target_id |
Get followers |
GET |
/users/followings/:user_id |
Get followings |
POST |
/users/unfollow |
Unfollow user/state |
POST |
/users/follow/check |
Check follow status |
POST |
/users/profile-pic |
Update profile picture |
GET |
/users/:username/profile-pic |
Get profile picture |
| Method | Endpoint | Description |
|---|---|---|
POST |
/comments |
Create comment |
GET |
/comments |
Get all comments |
GET |
/comments/:postID |
Get post comments |
| Method | Endpoint | Description |
|---|---|---|
GET |
/feed/:user_name |
Get personalized feed |
The project includes Python scripts for generating test data:
python scripts/create_users.pypython scripts/create_itineraries.pypython scripts/comment_itineraries.pypython scripts/follow_users.pyAccess Swagger documentation at:
http://localhost:8080/swagger/index.html
AllowOrigins: []string{"http://localhost:3000"}
AllowMethods: []string{"GET", "POST", "OPTIONS"}
AllowHeaders: []string{"Content-Type", "Authorization"}- Users: Profile management and authentication
- Itineraries: Travel plans and destinations
- Comments: User interactions and feedback
- Follows: Social network relationships
- States: US state information
- Create detailed travel plans
- Include budget, duration, and group size
- Add highlights and suggestions
- Upload travel photos
- Follow other travelers
- Follow specific US states
- Comment on travel posts
- Build travel communities
- Explore itineraries by state
- Find top destinations by popularity
- Discover trending travelers
- Personalized feed recommendations
- Fork the repository
- Create feature branch (
git checkout -b feature/new-feature) - Commit changes (
git commit -m 'Add new feature') - Push to branch (
git push origin feature/new-feature) - Open a Pull Request
Made with β€οΈ for travelers by travelers