Skip to content

mclovin22117/theventapp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

25 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Project will undergo switch from SUPABASE to Firebase due to Indian government's recent It law changes.

The app/web won't work for now.

TheVent Logo

TheVent

Speak freely. Anonymously.

Flutter Supabase Platform License


πŸ“– What is TheVent?

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.


✨ Features

  • πŸ” 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.

πŸ› οΈ Tech Stack

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

πŸš€ Getting Started (Install & Run)

Prerequisites

Make sure you have the following installed:


1. Clone the Repository

git clone https://github.com/mclovin22117/theventapp
cd theventapp

2. Install Dependencies

flutter pub get

3. Setup Supabase

Create a Supabase Project

  1. Go to supabase.com and create a new project
  2. Go to Project Settings β†’ API and copy your:
    • Project URL
    • Anon Key

Create the Config File

cp lib/supabase_config.example.dart lib/supabase_config.dart

Then open lib/supabase_config.dart and fill in your credentials:

const String supabaseUrl = 'YOUR_SUPABASE_URL';
const String supabaseAnonKey = 'YOUR_SUPABASE_ANON_KEY';

Create Database Tables

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)
);

Create Storage Buckets

In Supabase Dashboard β†’ Storage, create two public buckets:

  • profiles β€” for registration profile pictures
  • avatars β€” for profile picture updates

4. Run the App

On Web:

flutter run -d web-server

On Android Emulator:

flutter run

On a Physical Device:

flutter devices        # list available devices
flutter run -d <device_id>

5. Build for Release

πŸ“¦ Build Android APK

Debug APK (for testing):

flutter build apk --debug

Release APK (for distribution):

flutter build apk --release

Split APKs by ABI (smaller file size, recommended):

flutter build apk --split-per-abi

Output location:

build/app/outputs/flutter-apk/app-release.apk

🌐 Build for Web

flutter build web

Output 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/

🍴 Fork & Build for Personal Use

  1. Click Fork on the top right of this repository
  2. Clone your forked repo:
    git clone https://github.com/mclovin22117/theventapp
  3. Follow the Getting Started steps above
  4. Customize as you like β€” change the app name, colors, logo, etc.

Note: lib/supabase_config.dart is in .gitignore β€” your credentials will never be pushed to GitHub.


🀝 Contributing

Contributions are welcome and appreciated!

Steps to Contribute

  1. Fork the repository
  2. Create a branch for your feature:
    git checkout -b feature/your-feature-name
  3. Make your changes and commit:
    git commit -m "feat: add your feature description"
  4. Push to your fork:
    git push origin feature/your-feature-name
  5. Open a Pull Request on this repository

Contribution Guidelines

  • 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

πŸ› Raising an Issue

Found a bug or have a feature request?

  1. Go to the Issues tab
  2. Click New Issue
  3. 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
  4. Add relevant labels and submit

Please search existing issues before creating a new one to avoid duplicates.


πŸ“ Project Structure

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

πŸ“„ License

This project is licensed under the MIT License β€” see the LICENSE file for details.


Made with ❀️ by me

About

An app that let's you post anonymous thoughts, ideas, rants anything you want to chest out.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages