Campus Connect is an open-source Flutter community platform for FAST-NUCES students.
Mission: build a high-quality, student-owned digital campus space for discussion, collaboration, and trusted information sharing.
https://youtube.com/shorts/McVDLVQ--DU?feature=share
- FAST-only authentication (
@nu.edu.pkand campus domains) - Post feed with categories, search, sort, and filters
- Reddit-style voting and bookmarking
- Comment threads with real-time updates
- Profile with authored posts and saved posts
- Firebase-backed auth and Firestore data flow
- Flutter + Riverpod architecture for scalable state management
- Framework: Flutter
- Language: Dart 3.9.2
- State Management: Riverpod
- Backend: Firebase Auth + Cloud Firestore
- Media:
image_picker,image_cropper, Cloudinary uploads - UI: Material 3,
google_fonts,flutter_animate - CI/CD: GitHub Actions
Campus Connect follows a feature-module Flutter architecture with shared foundations:
- App shell and theme:
lib/app/ - Feature modules:
lib/features/<feature>/{presentation,application,domain,infrastructure} - Shared UI primitives:
lib/shared/ - Existing state/models/services:
lib/providers/,lib/models/,lib/services/ - Bootstrap/config:
lib/main.dart, native platform Firebase service files,lib/utils/
This keeps UI and feature ownership clear while the remaining non-UI layers are incrementally migrated.
- Flutter SDK (stable)
- Dart SDK (matches Flutter stable)
- Android Studio (Android emulator) and/or Xcode (iOS simulator on macOS)
- Firebase project with Auth + Firestore enabled
git clone https://github.com/ammaarrahmed/Campus-Connect.git
cd Campus-Connect
flutter pub get
flutter runThis repository ships template Firebase config only. Before first run, configure your own Firebase project locally using docs/LOCAL_DEVELOPMENT.md.
For full setup, including Firebase and emulator provisioning, see docs/LOCAL_DEVELOPMENT.md.
- Install dependencies:
flutter pub get - Configure your own Firebase project locally using
docs/LOCAL_DEVELOPMENT.md - Add local platform files and apply Firestore rules from
firestore.rules - Optionally fetch mobile config with
bash scripts/fetch_firebase_mobile_config.sh <project-id> <android-app-id> <ios-app-id> - Run:
flutter doctorflutter run
Run these before opening a PR:
dart format --output=none --set-exit-if-changed .
flutter analyze --no-fatal-infos
flutter testFor manual semantics, text scaling, contrast, and touch-target verification, use docs/ACCESSIBILITY_CHECKLIST.md.
Community contributions are welcome. Start here:
docs/CONTRIBUTING.mddocs/CODE_OF_CONDUCT.mddocs/AI_USAGE_POLICY.mddocs/SECURITY.md
Current source layout:
lib/
app/
app.dart
theme/
features/
auth/
posts/
profiles/
comments/
messaging/
moderation/
shared/
widgets/
main.dart
models/
providers/
services/
utils/
test/
docs/
images/
.github/
ISSUE_TEMPLATE/
workflows/
Recommended long-term structure and conventions are documented in docs/REPOSITORY_STRUCTURE.md.
Short and mid-term product roadmap is tracked in:
docs/ROADMAP.md- GitHub Issues with labels
enhancement,good first issue, andpriority-high
Engineering architecture and standards documents are tracked in engineering-foundation/.
Release planning and semantic versioning policy live in docs/RELEASE_STRATEGY.md.
This project is licensed under Apache License 2.0. See LICENSE.
Why Apache-2.0:
- Clear patent grant for contributors and adopters
- Strong compatibility with commercial and community use
- Well understood in large open-source ecosystems
@ammaarrahmed(Founder and Primary Maintainer)
If you want to help maintain the project, open a governance proposal issue.