Skip to content
nyarachunPublic

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

StepOut

StepOut is a full-stack web application for discovering events and finding people with similar interests.

Project Description

Users can explore events in their city, filter them by category and date, register for events, save favorites, and communicate with organizers through real-time chats.

Organizers can create and manage their own events and communicate with participants.

Administrators can moderate platform events and ban events with a specified reason.

The application supports three user roles: user, organizer, and admin, each with different permissions and functionality.

Note: When opening the application for the first time, loading events may take a little longer because the backend server may need to wake up. Please wait while the events are being loaded.

Test Accounts

You can create a new account through the registration page or use the following test accounts to explore different roles:

Admin

Email: admin@stepout.dev
Password: Admin12345!

Organizer

Email: lucas.organizer@stepout.dev
Password: Organizer123!

User

Email: emma.user@stepout.dev
Password: User12345!

Live Preview

Technologies Used

Deployment

  • Frontend: Hosted on GitHub Pages
  • Backend: Hosted on Render (Web Service)
  • Database: Serverless PostgreSQL hosted on Neon

Frontend

  • React (v19.2.8) – UI framework
  • TypeScript (v6.0.2) – Type safety
  • Vite (v8.2.2) – Build tool
  • React Router (v7.18.3) – Client-side routing
  • SCSS (v1.104.0) – Styling
  • Axios (v1.20.0) – HTTP requests
  • Zod (v4.6.2) – Data validation
  • Lucide React (v1.44.0) – Icons
  • Socket.IO Client (v4.8.1) – Real-time communication

Backend

  • Node.js (v20.20.2)
  • NestJS (v12.0.1) – Backend framework
  • TypeScript (v6.0.2) – Type safety
  • TypeORM (v1.1.1) – Database ORM
  • PostgreSQL – Relational database
  • JWT (v12.0.1) – Authentication
  • bcrypt (v6.0.0) – Password hashing
  • Socket.IO – Real-time communication
  • NestJS WebSockets (v12.0.1) – WebSocket integration
  • NestJS Pino / Pino (v5.3.1 / v10.4.0) – Logging system
  • Swagger / @nestjs/swagger (v12.0.1) – API documentation
  • Docker – Containerization

Getting Started

  1. Clone the repository:
git clone https://github.com/nyarachun/StepOut.git
cd StepOut
  1. Install dependencies:
npm install
cd client
npm install
cd ../server
npm install
cd ..
  1. Configure environment variables: Create a .env file in the server directory
DATABASE_URL=your_postgresql_connection_string
JWT_SECRET=your_jwt_secret
PORT=300
  1. Run the project locally:
npm start

Features

  • Authentication & Authorization: registration, login, JWT authentication, protected routes, role-based access control.
  • Event Discovery: browse events and filter them by city, category, and date.
  • Event Registration: register for events, cancel registrations, and track available places.
  • Favorites: save and remove favorite events.
  • Event Management: organizers can create, edit, and delete their own events.
  • Real-Time Chat: communication using Socket.IO and NestJS WebSockets.
  • Unread Messages: track unread chat messages and update the chat interface in real time.
  • User Profiles: edit personal information, interests, and biography.
  • Achievements: display user achievements.
  • Admin Moderation: administrators can ban events and provide a moderation reason.
  • Responsive Design: adaptive layouts for desktop, tablet, and mobile devices.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages