A Comprehensive Community Platform for The Villages, Florida
Village Connect is a full-stack community application platform designed to help residents of The Villages stay connected with community events, neighbors, and services. The platform consists of a mobile Flutter application and a FastAPI backend that provides data ingestion and API services.
- Architecture Overview
- Project Structure
- Getting Started
- Development
- For End Users
- Documentation
- Contributing
- License
Village Connect is organized as a monorepo containing both the mobile application and backend services:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Village Connect System β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ
β β β β β β
β Mobile βββββββββββΊβ Backend βββββββββββΊβ External β
β Flutter App β API β FastAPI β Scrape β Sources β
β β β β β β
ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ
β β
β β
βΌ βΌ
ββββββββββββββββ ββββββββββββββββ
β Firebase β β Database β
β Auth/Cloud β β β
ββββββββββββββββ ββββββββββββββββ
Mobile App:
- Flutter 3.24+ (Dart 3.3+)
- Firebase Auth & Firestore
- Provider for state management
- Offline-first architecture
Backend:
- FastAPI (Python 3.9+)
- SQLAlchemy ORM
- httpx + BeautifulSoup4 for web scraping
- Async request handling
Village_Connect/
βββ backend/ # FastAPI backend service
β βββ app.py # Main FastAPI application
β βββ requirements.txt # Python dependencies
β βββ scrapers/ # Data ingestion modules
β βββ api/ # API route definitions
β βββ models/ # Data models and schemas
β βββ tests/ # Backend tests
β
βββ mobile/ # Flutter mobile application
β βββ lib/
β β βββ screens/ # UI screens
β β βββ services/ # Business logic
β β βββ models/ # Data models
β β βββ widgets/ # Reusable components
β βββ assets/ # Images, icons, fonts
β βββ test/ # Unit and widget tests
β βββ pubspec.yaml # Flutter dependencies
β
βββ docs/ # Project documentation
β βββ ARCHITECTURE.md # System architecture details
β βββ TASKS.md # Task tracking
β βββ WORKLOG.md # Development log
β βββ DECISIONS.md # Design decisions (ADRs)
β
βββ .github/
β βββ workflows/
β βββ ci.yml # CI/CD pipeline
β
βββ README.md # This file
Before you begin, ensure you have the following installed:
For Backend:
- Python 3.9 or higher
- pip (Python package manager)
For Mobile:
- Flutter SDK 3.24 or higher
- Dart SDK 3.3 or higher
- Android Studio (for Android development)
- Xcode (for iOS development, macOS only)
-
Navigate to the backend directory:
cd backend -
Create a virtual environment:
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate
-
Install dependencies:
pip install -r requirements.txt
-
Run the development server:
python app.py
Or with uvicorn:
uvicorn app:app --reload --host 0.0.0.0 --port 8000
-
Access the API:
- API: http://localhost:8000
- API Documentation: http://localhost:8000/docs
- Health Check: http://localhost:8000/api/v1/health
-
Navigate to the mobile directory:
cd mobile -
Install Flutter dependencies:
flutter pub get
-
Configure Firebase:
- Create a Firebase project at Firebase Console
- Enable Authentication and Firestore
- Download
google-services.json(Android) andGoogleService-Info.plist(iOS) - Place configuration files in the appropriate directories
-
Run the app:
# List available devices flutter devices # Run on connected device or emulator flutter run
-
Build for production:
# Android APK flutter build apk --release # Android App Bundle flutter build appbundle --release # iOS (macOS only) flutter build ios --release
Backend:
cd backend
pytest tests/ -vMobile:
cd mobile
flutter testBackend:
cd backend
# Lint with flake8
flake8 .
# Format with black
black .
# Type checking with mypy
mypy . --ignore-missing-importsMobile:
cd mobile
# Format code
dart format .
# Analyze code
flutter analyzeThe project uses GitHub Actions for continuous integration. The pipeline includes:
- Backend: Linting (flake8, black, mypy) and testing (pytest)
- Mobile: Linting (dart format, flutter analyze) and testing (flutter test)
Workflows run automatically on:
- Push to
main,develop, orcopilot/**branches - Pull requests to
mainordevelop
Comprehensive documentation is available in the /docs/ directory:
- ARCHITECTURE.md - System architecture, data flow, and component details
- TASKS.md - Project task tracking and roadmap
- WORKLOG.md - Development activity log
- DECISIONS.md - Architecture Decision Records (ADRs)
For mobile app-specific documentation, see mobile/README.md.
- π Community Events - Browse and register for community events
- π₯ Resident Directory - Connect with neighbors
- π¬ Messaging - Community announcements and direct messages
- π¨ Emergency Services - Quick access to emergency contacts
- βΏ Accessibility - Large text, high contrast, voice feedback
- π± Offline Support - Full functionality without internet
- π Data Ingestion - Automated scraping of event data
- π REST API - Efficient endpoints for mobile app
- π Analytics - (Coming soon) Usage insights and metrics
- π Security - Firebase authentication and secure API
We welcome contributions! Please follow these steps:
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Make your changes and commit:
git commit -m 'Add amazing feature' - Push to the branch:
git push origin feature/amazing-feature - Open a Pull Request
Please ensure:
- Code passes all linting and tests
- New features include appropriate tests
- Documentation is updated as needed
This project is licensed under the Apache License 2.0 - see the LICENSE file for details.
- Built with β€οΈ for The Villages, Florida community
- Special thanks to all beta testers and contributors
- Icons provided by Material Design Icons
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Email: support@villagesconnect.com
If you're a resident looking to use the Village Connect app, here's your quick-start guide:
You can install this app on almost any smartphone (like an iPhone π or Samsung π±) or a tablet (like an iPad π).
For Apple (iPhone or iPad) Users π
Find and tap on the "App Store" icon. It looks like a blue square with a white "A". π¦
Tap on the "Search" tab, which is in the bottom-right corner and has a magnifying glass icon. π
In the search bar at the top, type: Village_Connect
You should see our app in the results. Tap the "Get" button next to it. β
Tool Tip: You may need to double-click the side button on your phone or enter your Apple password to confirm the download. This is normal and safe. π
The app will download and appear on your home screen. β¨
For Android (Samsung, Google, etc.) Users π€
Find and tap on the "Play Store" icon. It looks like a colorful triangle. βΆοΈ
Tap on the search bar at the very top of the screen. π
In the search bar, type: Village_Connect
You should see our app in the results. Tap the green "Install" button. β
The app will download and appear on your app screen. β¨
Your Quick-Start Guide (The 5 Main Features) β
Here are the most important things you can do with the Village_Connect app. π
See What's Happening: Events & Activities! π
What it is: A complete, up-to-date calendar of every event, club meeting, and activity in the community. ποΈ
Why it's helpful: You'll never miss a pickleball game πΈ, card night π, or town-hall meeting again. π
Create Your Profile: Say Hello! π§βπ€βπ§
What it is: Your own personal "page" in the app. You can add your name, a photo πΈ, and maybe a few of your interests. hobby π¨
Why it's helpful: It helps neighbors put a name to a face and lets you sign up for events. π
Search and Filter: Find What You Need! π
What it is: A search bar, just like on Google, but only for our community. π―
Why it's helpful: Instantly find what you're looking for. Just type "billiards" π± or "Saturday" βοΈ to see only the events that match.
Save Your Favorites: Keep Track! β€οΈ
What it is: A "bookmark" button (it may look like a heart or a star) for events you're interested in. β
Why it's helpful: You can save events you like into your own personal list, making them easy to find later. β
Get Reminders & Alerts: Stay Informed! π
What it is: The app can send you a little "ping" (a notification) on your phone before an event you've saved. β°
Why it's helpful: It's like a friendly tap on the shoulder so you don't forget about that concert πΆ or club meeting. π
Full How-To Guide: Using Village_Connect π
Let's walk through the app step-by-step. πΆββοΈπΆββοΈ
How to Create Your Account π§βπ»
The first time you open the app, it will ask you to "Sign Up" or "Log In."
Tap the "Sign Up" button. π
The app will ask for your basic information, such as:
Your Name π
Your Email Address βοΈ
A new Password π
Fill in these fields. βοΈ
Tool Tip: Your password is like a secret key. Choose something you can remember but that others wouldn't guess. It's a good idea to write it down in a safe place. π€«
Once you're done, tap the "Create Account" or "Register" button. β
That's it! You'll now be logged in. π In the future, you'll just use the "Log In" button with your email and the password you just created. β‘οΈ
How to See Events & Activities π
When you open the app, you will most likely land on the main Home screen π or Events screen. ποΈ
This screen will show you a list of all upcoming events, probably starting with what's happening today. βοΈ
You can scroll with your finger (swipe up and down) to see the full list. ππ
If you see an event you want to know more about, just tap on it. π
A new screen will open showing you all the details: βΉοΈ
What the event is π
When it starts and ends β°
Where it is (the location or recreation center) π
A description of the event ποΈ
How to Search for Specific Events π
If you're looking for something specific, the Search feature is your best friend. π΅οΈββοΈ
Look for a magnifying glass icon (π) or a bar that says "Search". It's usually at the top of the screen. π
Tap on the search bar. Your on-screen keyboard will pop up. β¨οΈ
Type what you're looking for. βοΈ
Example: Golf β³
Example: Mahjong π
Example: Saturday ποΈ
The app will automatically filter the list to show you only the events that match your search. β
How to Save a "Favorite" Event β€οΈ
When you find an event you don't want to forget, save it as a "Favorite." β
When you are looking at the details for an event, look for a Heart icon (β€οΈ) or a Star icon (β).
Tap the icon! It will usually fill in with color, showing you've saved it. π
That's it! The event is now saved. β
To find your list of saved events, look for a "Favorites" or "My Events" section in the app menu. π
How to Get Notifications (Alerts) π
A notification is a small pop-up message from the app that appears on your phone's screen. π±
For Reminders: When you save an event as a "Favorite" (see above), the app may ask if you want a reminder. You can set it to alert you 1 hour before the event, for example. β°
For Community News: The app might also send alerts for important, all-community news, like a road closure π§ or a special holiday schedule. π₯³
Tool Tip: The first time you use the app, your phone will ask, "Allow 'Village_Connect' to send you notifications?" It is highly recommended that you tap "Allow" to get these helpful reminders. β
You can always change this later in your phone's Settings. βοΈ
Need Help? β
Using new technology can be tricky, but don't worry. Help is always available. π€
(Note: This section needs to be filled in by the project team)
For App Help: [Insert Email Address or Contact Person's Name Here] π§
For Club & Event Info: [Insert Phone Number or Email for Main Rec. Center Here] π
Made with β€οΈ for The Villages Community
Stay connected, stay engaged, stay active!