Project will undergo switch from SUPABASE to Firebase due to Indian government's recent It law changes.
TheVent is an open-source, anonymous social platform where users can freely express their thoughts, feelings, and frustrations without fear of judgment.
Built with Flutter (for Android, iOS & Web) and powered by Supabase as the backend.
- π Anonymous Auth β Register & login with just a username and password. No email. No phone number.
- π Home Feed β Browse everyone's vents in real time.
- βοΈ Post a Vent β Share what's on your mind (up to 500 characters).
- β€οΈ Likes β One like per user per vent.
- π¬ Replies β Reply to any vent anonymously.
- π€ Profile β Upload, replace or remove your profile picture.
- π Dark Mode Only β Easy on the eyes.
- π± Cross Platform β Runs on Android, iOS and Web from a single codebase.
| Layer | Technology |
|---|---|
| Framework | Flutter 3.x |
| Language | Dart |
| Backend | Supabase (Database + Storage + Auth) |
| Navigation | Flutter Navigator 2.0 |
| Image Picker | image_picker |
| Local Storage | shared_preferences |
Make sure you have the following installed:
- Flutter SDK (v3.0.0 or above)
- Android Studio (for Android emulator)
- A Supabase account (free tier works)
git clone https://github.com/mclovin22117/theventapp
cd theventappflutter pub get- Go to supabase.com and create a new project
- Go to Project Settings β API and copy your:
Project URLAnon Key
cp lib/supabase_config.example.dart lib/supabase_config.dartThen open lib/supabase_config.dart and fill in your credentials:
const String supabaseUrl = 'YOUR_SUPABASE_URL';
const String supabaseAnonKey = 'YOUR_SUPABASE_ANON_KEY';Run the following SQL in your Supabase SQL Editor:
-- Users table
CREATE TABLE users (
id UUID DEFAULT gen_random_uuid() PRIMARY KEY,
username TEXT UNIQUE NOT NULL,
password TEXT NOT NULL,
profile_picture_url TEXT,
created_at TIMESTAMP DEFAULT NOW()
);
-- Posts table
CREATE TABLE posts (
id UUID DEFAULT gen_random_uuid() PRIMARY KEY,
user_id UUID REFERENCES users(id) ON DELETE CASCADE,
content TEXT NOT NULL,
created_at TIMESTAMP DEFAULT NOW(),
likes_count INTEGER DEFAULT 0
);
-- Replies table
CREATE TABLE replies (
id UUID DEFAULT gen_random_uuid() PRIMARY KEY,
post_id UUID REFERENCES posts(id) ON DELETE CASCADE,
user_id UUID REFERENCES users(id) ON DELETE CASCADE,
content TEXT NOT NULL,
created_at TIMESTAMP DEFAULT NOW()
);
-- Likes table
CREATE TABLE likes (
id UUID DEFAULT gen_random_uuid() PRIMARY KEY,
post_id UUID REFERENCES posts(id) ON DELETE CASCADE,
user_id UUID REFERENCES users(id) ON DELETE CASCADE,
created_at TIMESTAMP DEFAULT NOW(),
UNIQUE(post_id, user_id)
);In Supabase Dashboard β Storage, create two public buckets:
profilesβ for registration profile picturesavatarsβ for profile picture updates
On Web:
flutter run -d web-serverOn Android Emulator:
flutter runOn a Physical Device:
flutter devices # list available devices
flutter run -d <device_id>Debug APK (for testing):
flutter build apk --debugRelease APK (for distribution):
flutter build apk --releaseSplit APKs by ABI (smaller file size, recommended):
flutter build apk --split-per-abiOutput location:
build/app/outputs/flutter-apk/app-release.apk
flutter build webOutput location:
build/web/You can deploy the contents of
build/web/to any static hosting service like:
Build with a specific base URL (if hosted in a subdirectory):
flutter build web --base-href /theventapp/- Click Fork on the top right of this repository
- Clone your forked repo:
git clone https://github.com/mclovin22117/theventapp
- Follow the Getting Started steps above
- Customize as you like β change the app name, colors, logo, etc.
Note:
lib/supabase_config.dartis in.gitignoreβ your credentials will never be pushed to GitHub.
Contributions are welcome and appreciated!
- Fork the repository
- Create a branch for your feature:
git checkout -b feature/your-feature-name
- Make your changes and commit:
git commit -m "feat: add your feature description" - Push to your fork:
git push origin feature/your-feature-name
- Open a Pull Request on this repository
- Keep code clean and well-commented
- Follow existing code structure and naming conventions
- Test your changes on both Web and Android before submitting PR
- One feature/fix per pull request
Found a bug or have a feature request?
- Go to the Issues tab
- Click New Issue
- Choose the appropriate template:
- π Bug Report β describe the bug, steps to reproduce, expected vs actual behavior
- π‘ Feature Request β describe the feature and why it would be useful
- Add relevant labels and submit
Please search existing issues before creating a new one to avoid duplicates.
theventapp/
βββ lib/
β βββ main.dart # App entry point + Navigation
β βββ supabase_config.dart # Supabase credentials (gitignored)
β βββ supabase_config.example.dart
β βββ models/
β β βββ post_model.dart
β β βββ reply_model.dart
β βββ screens/
β β βββ splash_screen.dart
β β βββ login_screen.dart
β β βββ register_screen.dart
β β βββ home_screen.dart
β β βββ post_screen.dart
β β βββ post_details_screen.dart
β β βββ profile_screen.dart
β β βββ about_screen.dart
β βββ services/
β βββ auth_service.dart
β βββ post_service.dart
β βββ profile_service.dart
βββ assets/
β βββ images/
β βββ logo.png
βββ pubspec.yaml
This project is licensed under the MIT License β see the LICENSE file for details.
