Nomed is a modern, location-aware full-stack application that allows users to discover, join, and interact in location-specific chat rooms. Find rooms nearby on a Google Map, create your own rooms based on your current location, and chat with others in real-time.
- Authentication System: Secure user registration and login using JWT.
- Location-Based Discovery: Interactive Google Map interface showing chat rooms clustered around the user's location.
- Real-Time Chat: WebSockets (Socket.io) integration for instantaneous messaging within any room.
- Room Management: Create new chat rooms tied to geographical coordinates.
- State Management: Robust BLoC pattern for managing UI state across the Flutter app.
- Clean Architecture: Separation of concerns between the presentation layer, domain/business logic, and network layer.
- Framework: Flutter (v3.32)
- State Management: Flutter BLoC
- Networking: Dio
- Real-time Engine: socket_io_client
- Maps & Location: google_maps_flutter, geolocator
- Dependency Injection: get_it
- Runtime: Node.js & Express.js (TypeScript)
- Real-time Server: Socket.io
- Database: MongoDB with Mongoose
- Security: bcrypt, jsonwebtoken, zod (for schema validation)
- Flutter SDK
- Node.js
- MongoDB Instance
- Navigate to the server directory:
cd nomed-server - Install dependencies:
npm install
- Create a
.envfile referencing the.env.examplefile and provide your MongoDB URI and JWT secrets. - Start the server (Dev Mode):
npm run dev
- Ensure the server is running and accessible (update API baseUrl in
lib/shared/network/if on a physical device). - Install dependencies:
flutter pub get
- Add your Google Maps API Key to
android/app/src/main/AndroidManifest.xmlandios/Runner/AppDelegate.swift. - Create a
.envfile in the Flutter root for your API endpoints. - Run the app:
flutter run
lib/features/: Contains specific feature modules (auth,home,chat).bloc/: State management logic.domain/: Business logic, network, and socket abstractions.model/: Data structures.ui/: Screens and widgets.
core/: Shared constants, helpers, and dependency locator.shared/: App-wide API endpoints and setups.


