GoodVibes Connect — Project Story

Inspiration

GoodVibes Connect was inspired by the need for stronger, safer, and more connected apartment communities. The project started from observing fragmented neighborhood communication — lost notices, unused shared resources, and low event turnout — and imagining a single app that makes coordination simple and inclusive.

What it does

GoodVibes Connect provides:

  • Resident-facing features: browse and request shared resources, join or create events, view neighbors.
  • Admin features: approve resource requests, manage apartment members, create apartment-wide announcements and events.
  • Role-based access: resident, apartment_admin, super_admin (platform).
  • Real-time-friendly foundation for notifications and event participation.
  • Secure auth with JWT and per-apartment scoping.

Core flows:

  • Auth: register / login → JWT with role.
  • Resources: list → request → approve → return.
  • Events: create → RSVP/participate → list by apartment.

How I built it

  • Frontend: React SPA (context-based auth, modular API clients).
  • Backend: Express + Mongoose (ES modules), RESTful controllers and service layer.
  • Data: MongoDB for flexible, apartment-scoped schemas (User, Apartment, Resource, Event).
  • Dev tooling: nodemon, Jest, Supertest for backend tests; React Testing Library for frontend.
  • RBAC: role field on User model, middleware that injects req.user from JWT and allows route-level checks.

Architectural notes:

  • Controllers are thin; business logic lives in services for testability.
  • Schemas enforce relations via ObjectId refs (events -> users/apartment).
  • Seed script creates sample apartment, admin, and resident users for dev/testing.

Challenges we ran into

  • Designing RBAC so permissions remain simple but expressive across apartments.
  • Ensuring event/resource operations are scoped to an apartment (multi-tenant safety).
  • Handling concurrent resource requests and avoiding race conditions — required cautious service-level checks.
  • Balancing simplicity for residents with enough admin controls for apartment_admins.
  • Test flakiness early on due to DB state; solved with clear seed/reset steps in tests.

Accomplishments that we're proud of

  • Clear role-based flow allowing apartment_admins to manage resources without full platform access.
  • A modular backend service layer that is easy to unit test and extend.
  • Seed and env tooling that enable quick dev setup (single command to create sample data).
  • Well-documented API surfaces and a working frontend that exercises key flows.

What we learned

  • Practical RBAC design: store a small enum (resident | apartment_admin | super_admin) and enforce via middleware — simple and effective.
  • Importance of service-level atomic checks when mutating shared objects (resources/events).
  • Tests that reset DB state or use dedicated test DB drastically reduce flakiness.
  • UX matters: small details (event reminders, resource status labels) greatly improve adoption.

A concise math example used in planning:

  • Expected concurrent attendees for events was estimated with a simple growth model:
    • If each resident has probability p of attending an event, expected attendees for apartment with N residents: E[A] = N * p.
    • For capacity planning choose p based on historical turnout (e.g., p ≈ 0.15 → E[A] = 0.15N).

(LaTeX example) Expected attendees: E[A] = N * p

What's next for GoodVibes Connect

  • Real-time features: WebSocket notifications for resource approvals and event reminders.
  • Better analytics: attendance trends, popular resources.
  • Improved conflict handling: optimistic locking or job queue for resource approvals to avoid races at scale.
  • Mobile-first UI improvements and push notifications.
  • Expand RBAC to support finer-grained permissions and guest roles for visitors.
Share this project:

Updates