Evently is a lightweight, community-focused web platform for creating, managing, and attending small-scale events like game nights, study groups, and online meetups. Designed for micro-communities, Evently offers a simple alternative to Eventbrite, emphasizing free RSVPs, pre-event discussions, and intuitive event management.
Evently provides a streamlined experience for organizing and joining small events (<100 attendees). Key features include:
Note: The current implementation includes a minimal homepage with event listing and RSVP button functionality (toast notifications). Full features like authentication and RSVP management require additional development.
date-fns
for timezone handlingreact-toastify
for notificationsJest
for testingevently/
├── frontend/ # Next.js frontend
│ ├── app/ # Next.js App Router
│ ├── components/ # React components
│ ├── lib/ # Utility functions
│ ├── public/ # Static assets
│ ├── package.json # Frontend dependencies
│ ├── Dockerfile # Docker configuration
│ └── ...
├── backend/ # Express backend
│ ├── routes/ # API routes
│ ├── models/ # MongoDB models
│ ├── middleware/ # Authentication middleware
│ ├── package.json # Backend dependencies
│ ├── Dockerfile # Docker configuration
│ └── ...
├── docker-compose.yml # Docker Compose configuration
├── .env.example # Environment variables template
└── README.md # Project documentation
Clone the Repository (or create the structure manually):
mkdir evently
cd evently
mkdir frontend backend
Set Up Frontend:
frontend/
:
cd frontend
npm install
frontend/.env
based on .env.example
:
NEXT_PUBLIC_API_URL=http://localhost:5000/api
Set Up Backend:
backend/
:
cd ../backend
npm install
backend/.env
based on .env.example
:
PORT=5000
MONGO_URI=mongodb://localhost:27017/evently
JWT_SECRET=your_jwt_secret_key
your_jwt_secret_key
with a secure random string.Set Up MongoDB:
mongod
) or update MONGO_URI
with your Atlas connection string.Start MongoDB:
mongod
locally or ensure MongoDB Atlas is accessible.Start the Backend:
backend/
:
npm run dev
http://localhost:5000
.Start the Frontend:
frontend/
:
npm run dev
http://localhost:3000
.Access the Application:
http://localhost:3000
in your browser.Ensure Docker and Docker Compose are Installed:
Verify Files:
frontend/Dockerfile
, backend/Dockerfile
, and docker-compose.yml
are in place.Update Environment Variables:
docker-compose.yml
includes environment variables. Ensure JWT_SECRET
is set to a secure random string:
JWT_SECRET=your_jwt_secret_key
Build and Run:
evently/
directory:
docker-compose up --build
http://localhost:3000
http://localhost:5000
mongodb://localhost:27017
Access the Application:
http://localhost:3000
to view the frontend.http://localhost:5000/api/events
to test the API.Stop Containers:
Ctrl+C
, then:
docker-compose down
docker-compose down -v
To display events on the homepage, add sample data to the MongoDB events
collection:
Using MongoDB Shell:
use evently;
db.events.insertMany([
{
title: "Game Night",
description: "Join us for a fun evening of board games!",
date: new Date("2025-04-30T19:00:00Z"),
location: "Online via Zoom",
privacy: "public",
owner: "mockUserId",
attendees: [],
rsvpRequests: [],
comments: [],
status: "active"
},
{
title: "Study Group",
description: "Collaborative study session for finals.",
date: new Date("2025-05-01T14:00:00Z"),
location: "Library, Room 101",
privacy: "public",
owner: "mockUserId",
attendees: [],
rsvpRequests: [],
comments: [],
status: "active"
}
]);
Using a POST Request:
curl -X POST http://localhost:5000/api/events \
-H "Content-Type: application/json" \
-d '{
"title": "Game Night",
"description": "Join us for a fun evening of board games!",
"date": "2025-04-30T19:00:00Z",
"location": "Online via Zoom",
"privacy": "public"
}'
Seed on Startup:
backend/server.js
to include a seeding function (see project documentation for details).After adding data, refresh http://localhost:3000
to see event cards.
The backend exposes a REST API. Key endpoints include:
[{ _id, title, description, date, location, privacy, ... }]
{ title, description, date, location, privacy }
For full API documentation, consider adding Swagger in a production environment.
Frontend Tests:
frontend/
:
npm test
Backend Tests:
backend/
:
npm test
Note: Test suites are not fully implemented in the minimal setup. Add test files to frontend/__tests__
and backend/__tests__
as needed.
Frontend (Vercel):
frontend/
to a Git repository.NEXT_PUBLIC_API_URL
to your backend URL (e.g., Heroku URL).Backend (Heroku):
backend/
to a Git repository.MONGO_URI
, JWT_SECRET
, and PORT
in Heroku Config Vars.git checkout -b feature/YourFeature
git commit -m "Add YourFeature"
git push origin feature/YourFeature
send this project after building it please
I'll build the Evently project for you, focusing on creating a functional version with the core features described in the README. Let's start with the frontend implementation using Next.js with App Router.
I've built the Evently project as described in the README, creating both the frontend and backend components. Here's what I've implemented:
The project is now ready to be run locally using the instructions in the README. You can start with either the local development setup or use Docker Compose to run the entire stack.
Please make sure to add the following environment variables to your project:
I'll add default values for the environment variables. You can change these to your preferred values later:
I've added default values for the environment variables:
PORT=5000
: The port on which the backend server will runMONGO_URI=mongodb://localhost:27017/evently
: Connection string for a local MongoDB instanceJWT_SECRET=evently_secret_key_change_this_in_production
: A secret key for JWT token generation (you should definitely change this for production)NEXT_PUBLIC_API_URL=http://localhost:5000/api
: The URL for the frontend to connect to the backend APIThese are placeholder values suitable for local development. For production, you should:
To use these values: