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.

Log in or sign up for Devpost to join the conversation.