https://github.com/guuri11/fullcourtfiesta
FullCourtFiesta is a React Native Expo application, serving as a basketball social network where users can connect, chat, create posts, and discover nearby basketball courts based on their location. It's a personal project in the MVP phase, built with a hexagonal architecture, providing flexibility to switch between backend frameworks
https://github.com/guuri11/fullcourtfiesta
basketball expo hexagonal-architecture react-native
Last synced: 3 months ago
JSON representation
FullCourtFiesta is a React Native Expo application, serving as a basketball social network where users can connect, chat, create posts, and discover nearby basketball courts based on their location. It's a personal project in the MVP phase, built with a hexagonal architecture, providing flexibility to switch between backend frameworks
- Host: GitHub
- URL: https://github.com/guuri11/fullcourtfiesta
- Owner: Guuri11
- Created: 2023-12-30T12:17:04.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2024-01-22T17:53:05.000Z (over 2 years ago)
- Last Synced: 2025-02-24T01:12:18.956Z (over 1 year ago)
- Topics: basketball, expo, hexagonal-architecture, react-native
- Language: TypeScript
- Homepage:
- Size: 5.98 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# FullCourtFiesta ๐๐
FullCourtFiesta is a React Native Expo application, serving as a basketball social network where users can connect, chat, create posts, and discover nearby basketball courts based on their location. It's a personal project in the MVP phase, built with a hexagonal architecture, providing flexibility to switch between backend frameworksโcurrently powered by Supabase with future plans to explore alternatives like Spring Boot.
โผ๏ธ๐ This is currently a MVP so a lot of futures are not mature enough or developed, I just focused on built the basics for the app so I can use it to focus on my backend projects
## Key Features ๐
- **Customized Profile:** Create your profile, add information about your basketball skills, and share your achievements.
- **Social Connection:** Find and connect with other basketball enthusiasts. Expand your network!
- **Real-time Chat:** Chat with other users in real-time. Organize games, share tips, or just have fun.
- **Content Posting:** Share your basketball-related experiences, photos, and videos. Inspire others and be part of the community.
- **Court Locator:** Discover nearby basketball courts based on your current location.
## Hexagonal Architecture ๐
FullCourtFiesta is built using a hexagonal architecture to ensure flexibility in choosing the backend. It currently integrates with [Supabase](https://supabase.io/), but you can easily experiment with other backend frameworks like Spring Boot.
## Prerequisites ๐ ๏ธ
- Node.js and npm
- Expo CLI
## Installation ๐
1. Clone the repository:
```bash
git clone https://github.com/Guuri11/FullCourtFiesta
cd FullCourtFiesta
```
2. Install dependencies:
```bash
npm install
```
3. Start the application:
```bash
npx expo start
```
4. Scan the QR code with the Expo Go app on your mobile device.
## Backend Configuration ๐ง
If you wish to switch the backend, follow these steps:
Go to `src/infrastructure` folder and create the repository for that will connect with your specific backend. Then go to `src/ui/store/app/index.ts` and add the repository like others
## Architecture Overview ๐๏ธ
The Hexagonal Architecture structured is inspired on this video from CodelyTV
https://www.youtube.com/watch?v=eNFAJbWCSww&t=203s&pp=ygUdaGV4YWdvbmFsIHR5cGVzY3JpcHQgY29kZWx5dHY%3D
The FullCourtFiesta application follows a modular hexagonal architecture, emphasizing separation of concerns and flexibility.
The project structure is organized into the following main directories:
- **assets:** Contains assets such as Lottie animations.
- **src:**
- **application:** Business logic layer containing application services.
- **domain:** Defines the core domain entities and aggregates:
- **Authentication**
- **Court**
- **Event**
- **Friendship**
- **Message**
- **Player**
- **Post**
- **infrastructure:** Infrastructure and configuration details:
- **config:** Configuration settings for the application.
- **locales/resources:** Localization resources for multilingual support.
- **persistance/repositories:** Data repositories for different domain entities:
- **Authentication**
- **Court**
- **Chat**
- **Friendship**
- **Player**
- **Post**
- **types:** Shared type definitions used across the application.
- **ui:** User Interface components and layout-related modules:
- **components/core:** Core reusable UI components.
- **design/common:** Common design elements like Chat and Form components.
- **design/layout/Notifications:** Notification-related layout components.
- **router:** Navigation logic organized by application sections:
- **Authentication/OnBoarding**
- **Community**
- **Home**
- **Profile**
- **Search**
- **constants:** Application-wide constants.
- **context:** Context providers for state management.
- **hooks/store:** Custom hooks for state management.
- **stores:** Application state stores for various concerns:
- **app/authentication**
- **app/authorization**
- **app/location**
- **app/ui**
- **interfaces:** Interfaces used throughout the application.
This structure facilitates maintainability, testability, and future adaptability by separating concerns at both the domain and infrastructure levels.
## Some Screenshots ๐ธ

## License ๐
This project is licensed under the MIT License. See the [LICENSE](LICENSE) file for more details.