A mobile football field booking application built with React Native (Expo) and TypeScript.
This app allows users to browse and book football fields. It features two user roles:
- Players: Browse field complexes, view all fields, and manage their profile
- Owners: Manage their field complexes and bookings (dashboard)
- ๐ข Browse field complexes with ratings and details
- โฝ View all available football fields
- ๐ Search fields by name, address, or complex
- ๐ท๏ธ Filter by field type (5-a-side, 7-a-side, 11-a-side)
- ๐ View field availability status
- ๐ค Manage personal profile
- ๐ View booking history and favorites
- ๐ Dashboard with statistics (total fields, bookings, revenue, customers)
- ๐ฏ Quick actions for management
- ๐ง Coming soon: Add fields, manage bookings, view reports
The app includes 2 demo accounts for testing:
Player Account:
Email: player@test.com
Password: 123456
Owner Account:
Email: owner@test.com
Password: 123456
football-field-booking/
โโโ src/
โ โโโ components/ # Reusable components
โ โ โโโ ClusterCard.tsx
โ โ โโโ FieldCard.tsx
โ โ โโโ SearchBar.tsx
โ โ โโโ CategoryFilter.tsx
โ โ โโโ CustomInput.tsx
โ โ โโโ PrimaryButton.tsx
โ โ โโโ SocialLoginButtons.tsx
โ โ โโโ Typography.tsx
โ โโโ context/ # React Context
โ โ โโโ AuthContext.tsx # Authentication context
โ โโโ navigation/ # Navigation configuration
โ โ โโโ RootNavigator.tsx
โ โ โโโ AuthNavigator.tsx
โ โ โโโ PlayerNavigator.tsx (Bottom Tabs)
โ โ โโโ OwnerNavigator.tsx
โ โโโ screens/ # Application screens
โ โ โโโ auth/
โ โ โ โโโ LoginScreen.tsx
โ โ โ โโโ RegisterScreen.tsx
โ โ โ โโโ WelcomeScreen.tsx
โ โ โโโ player/
โ โ โ โโโ HomeScreen.tsx # Field complexes
โ โ โ โโโ FieldListScreen.tsx # All fields
โ โ โ โโโ FieldDetailScreen.tsx
โ โ โ โโโ BookingScreen.tsx
โ โ โ โโโ ProfileScreen.tsx
โ โ โโโ owner/
โ โ โโโ DashboardScreen.tsx
โ โ โโโ ManageFieldsScreen.tsx
โ โ โโโ ManageBookingsScreen.tsx
โ โโโ services/ # API services (coming soon)
โ โโโ store/ # State management (coming soon)
โ โโโ types/ # TypeScript types
โ โ โโโ index.ts
โ โโโ utils/ # Utility functions
โโโ assets/ # Images and static files
โโโ App.tsx # App entry point
โโโ app.json # Expo configuration
โโโ package.json
โโโ tsconfig.json
- React Native - Mobile framework
- Expo - Development platform (SDK 54)
- TypeScript - Type safety
- React Navigation v6 - Navigation library
- Stack Navigator
- Bottom Tabs Navigator
- Expo Vector Icons - Icon library
- React Context API - State management (authentication)
- Node.js (v18 or higher)
- npm or yarn
- Expo Go app on your mobile device (from App Store or Google Play)
- Clone the repository:
git clone <repository-url>
cd FBF-FE- Install dependencies:
npm install- Start the development server:
npx expo start-
Install Expo Go on your phone:
-
Start the dev server:
npm start-
Scan the QR code:
- Android: Open Expo Go app โ Scan QR code
- iOS: Open Camera app โ Scan QR code โ Tap notification
-
The app will load and you can login with demo accounts!
npm run web
# or press 'w' in the terminal# Start emulator first, then:
npm run androidAuthNavigator (Stack)
โโโ Welcome
โโโ Login
โโโ Register
PlayerNavigator (Bottom Tabs)
โโโ Home (Complexes) # Browse field complexes
โโโ FieldList (All Fields) # Browse all fields
โโโ Profile # User profile & settings
OwnerNavigator (Stack)
โโโ Dashboard # Owner dashboard
ClusterCard- Display field complex with image, rating, locationFieldCard- Display individual field with details, price, availabilitySearchBar- Search input with filter buttonCategoryFilter- Horizontal scrollable category chipsCustomInput- Styled input with icon supportPrimaryButton- Primary action buttonTypography- Text component with variants (h1, h2, subtitle, body)
The app uses React Context API for authentication management:
AuthContextprovides:user- Current user objectisAuthenticated- Boolean auth statuslogin(email, password)- Login functionlogout()- Logout function
Authentication state automatically switches between Auth and Main navigators.
Currently, the app uses mock data for:
- Field complexes
- Football fields
- User profiles
- Statistics
In production, these will be replaced with actual API calls.
- Project structure and navigation
- Authentication flow with Context API
- Login screen with demo accounts
- Player screens (Home, FieldList, Profile)
- Owner dashboard
- Reusable components
- Bottom tab navigation
- Search and filter functionality
- Mock data and UI
- Backend API integration
- Real booking functionality
- Field detail screen
- Booking history
- Payment integration
- Owner field management
- Push notifications
- Map integration
- Start the app with
npm start - Login with demo accounts (see above)
- Test player features:
- Browse complexes
- View all fields
- Search and filter
- View profile
- Logout
- Test owner dashboard:
- View statistics
- Check quick actions
- Logout
npm start # Start Expo dev server
npm run android # Run on Android (requires emulator/device)
npm run ios # Run on iOS (macOS only)
npm run web # Run on web browser- Development: Using Expo Go
- Build: Can create standalone builds with EAS Build
- No native build required for development
- See
ACCOUNTS.mdfor detailed demo account information - See
ASSET_INSTRUCTIONS.mdfor asset management guidelines
This is a private project. For collaboration:
- Create a new branch for features
- Follow TypeScript and ESLint rules
- Test on both Android and iOS
- Create pull requests for review
- All UI text is in English
- Currency displayed as USD ($)
- Mock data uses HCMC (Ho Chi Minh City) locations
- App follows Material Design principles
- Color scheme: Emerald green (#10B981) as primary
-
Backend Integration
- REST API or GraphQL
- Real-time booking updates
- User authentication with JWT
-
Advanced Features
- Google Maps integration
- Real-time availability
- Online payment (Stripe/PayPal)
- Review and rating system
- Push notifications
-
Owner Dashboard
- Full field management
- Booking calendar
- Revenue reports
- Customer management
For questions or support, please contact the development team.
Built with โค๏ธ using React Native & Expo