Evently is a full-stack event management application that allows users to create, manage, and RSVP to events. The application features user authentication, event creation and management, RSVP functionality, and Google Calendar integration.
-
User Authentication
- Email/password registration and login
- Google OAuth integration
- JWT-based authentication
-
Event Management
- Create, read, update, and delete events
- View upcoming events
- Search for events
- View event details including location, date, and description
-
RSVP System
- RSVP to events (Going, Maybe, Not Going)
- View RSVP counts for events
- Email notifications for RSVPs
-
Google Calendar Integration
- Connect your Google Calendar
- Add events to your Google Calendar
-
Responsive Design
- Mobile-friendly interface
- Dark mode support
- React 19
- Tailwind CSS
- Vite
- Go 1.24
- PostgreSQL
- JWT Authentication
- Google OAuth 2.0
- Google Calendar API
evently/
├── backend/
│ ├── cmd/
│ │ └── main.go # Application entry point
│ ├── controllers/ # HTTP request handlers
│ ├── db/ # Database connection and migrations
│ ├── models/ # Data models
│ ├── repositories/ # Database operations
│ ├── server/ # Server setup and configuration
│ └── services/ # Business logic
├── frontend/
│ ├── public/ # Static assets
│ ├── src/
│ │ ├── components/ # React components
│ │ ├── App.jsx # Main application component
│ │ ├── main.jsx # Application entry point
│ │ └── index.css # Global styles
│ ├── index.html # HTML template
│ ├── package.json # Frontend dependencies
│ ├── tailwind.config.js # Tailwind CSS configuration
│ └── vite.config.js # Vite configuration
├── .env # Environment variables (not in repo)
├── go.mod # Go dependencies
├── go.sum # Go dependencies checksums
└── README.md # Project documentation
- Go 1.24 or higher
- Node.js 18 or higher
- PostgreSQL
- Google Cloud Platform account (for OAuth and Calendar API)
- Create a
.envfile in the root directory with the following variables:
# Database
DB_HOST=localhost
DB_PORT=5432
DB_USER=postgres
DB_PASSWORD=your_password
DB_NAME=evently
# JWT
JWT_SECRET=your_jwt_secret
# Google OAuth
GOOGLE_CLIENT_ID=your_google_client_id
GOOGLE_CLIENT_SECRET=your_google_client_secret
GOOGLE_REDIRECT_URL=http://localhost:9000/api/auth/google/callback
# Google Calendar
GOOGLE_CALENDAR_REDIRECT_URL=http://localhost:9000/api/calendar/callback
# Email Service
EMAIL_FROM=your_email@example.com
EMAIL_PASSWORD=your_email_password
EMAIL_SMTP_HOST=smtp.example.com
EMAIL_SMTP_PORT=587
- Create a
google_client_credentials.jsonfile for Google Calendar API (download from Google Cloud Console)
- Create a PostgreSQL database named
evently - The application will automatically run migrations on startup
# From the root directory
go run backend/cmd/main.goThe backend server will start on http://localhost:9000
# From the frontend directory
cd frontend
npm install
npm run devThe frontend development server will start on http://localhost:5173
POST /api/signup- Register a new userPOST /api/signin- Login a userGET /api/auth/google- Get Google OAuth URLGET /api/auth/google/callback- Google OAuth callback
GET /api/events/upcoming- Get upcoming eventsGET /api/events/user- Get current user's eventsPOST /api/events- Create a new eventGET /api/events/:id- Get event by IDPUT /api/events/:id- Update eventDELETE /api/events/:id- Delete eventGET /api/events/search- Search events
GET /api/events/:id/rsvp- Get user's RSVP status for an eventPOST /api/events/:id/rsvp- Create or update RSVPDELETE /api/events/:id/rsvp- Delete RSVPGET /api/events/:id/rsvp/count- Get RSVP counts for an eventGET /api/events/:id/rsvps- Get all RSVPs for an event
GET /api/calendar/authorize- Get Google Calendar authorization URLGET /api/calendar/callback- Google Calendar authorization callbackPOST /api/calendar/add-event- Add event to Google CalendarGET /api/calendar/check-connection- Check if user has connected Google Calendar
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.