A unified academic space for students. Built by students, for students.
BLACK is a digital ecosystem designed to centralize and simplify academic life. Our mission is to provide an open-source, powerful, and intuitive platform that consolidates notes, tasks, and community interaction. By removing fragmentation, we empower students to focus on what matters most: learning and collaboration.
The application is built on the philosophy that essential academic tools should be accessible, transparent, and community-driven. We prioritize privacy, performance, and a user-centric design that adapts to the real-world needs of students.
Download the latest version of BLACK for Android directly from the Google Play Store.
- Unified Uploads & Management: Consolidate handwritten notes, PDFs, lecture slides, and images effortlessly. All your materials, in one place.
- Intelligent Cross-Platform Search: Instantly find notes by subject, tags, or user across all uploaded content. Never lose track of a single piece of information.
- Integrated Task & Schedule Management: Organize your academic life with a built-in to-do list and calendar to manage tasks, assignments, and deadlines seamlessly.
- Collaborative & Community Forum: A dedicated space to ask questions, request notes from peers, share knowledge, and connect with other students from your university and beyond.
- Social Connectivity: Follow classmates and friends to stay updated with their public posts and shared notes, fostering a collaborative learning environment.
- Privacy-Focused: You have full control over what you share. Keep notes private, or make them public to help others. Your data is yours.
This section provides the necessary information to get the project running locally and to start contributing.
BLACK is built with a modern, scalable, and cross-platform technology stack, chosen for performance and developer experience.
- Framework: Flutter & Dart
- Architecture: Clean Architecture Principles
- Primary Backend (BaaS): Supabase (Authentication, PostgreSQL Database, Storage)
- Secondary Backend (BaaS): Firebase (Cloud Messaging for Push Notifications, Google Sign-In)
- State Management: Provider
- Containerization: Docker
Ensure you have the following installed on your local development machine:
- Flutter SDK (version 3.0.0 or higher)
- Git
- Docker Desktop (for containerized deployment)
- An IDE such as Visual Studio Code or Android Studio
First, clone the official repository to your local machine and install the required Dart packages:
git clone [https://github.com/heptagramorg/BLACK.git](https://github.com/heptagramorg/BLACK.git)
cd BLACK
flutter pub getBLACK utilizes both Supabase and Firebase for its backend services. Configuration for both is mandatory for full application functionality.
- Navigate to Supabase and create a new project.
- Within your Supabase project, go to the SQL Editor. Run the necessary migration scripts located in the
/supabase/migrationsdirectory of this repository to set up the database schema (profiles,notes,followers, etc.). - Navigate to Project Settings > API to find your project URL and
anonkey. These will be used as environment variables.
- Navigate to the Firebase Console and create a new project.
- Enable Authentication: In the console, go to Authentication > Sign-in method and enable the required providers (e.g., Google, Email/Password).
- Register Your App: Register a new Android application. Follow the on-screen instructions to download the configuration file:
- Android:
google-services.json(place this file in theandroid/app/directory).
- Android:
- Configure FlutterFire: Use the FlutterFire CLI to configure your local project, which connects your Flutter app to Firebase.
This command will generate the
flutterfire configure
lib/firebase_options.dartfile automatically.
Create a file named .env in the root of the project directory. This file is ignored by Git and is used to store your secret keys and credentials. Populate it with your Supabase credentials.
# Supabase Credentials
SUPABASE_URL=YOUR_SUPABASE_URL
SUPABASE_ANON_KEY=YOUR_SUPABASE_ANON_KEY
You can run the application directly on a connected device/emulator or build a Docker container.
- Run in Development Mode:
flutter run
- Build and Run with Docker:
# Build the Docker image docker build -t black-app . # Run the container docker run -p 8080:80 black-app
BLACK is a community-driven, open-source project. We welcome contributions from developers, designers, and students. Whether it's fixing a bug, proposing a new feature, or improving documentation, your help is valued.
- Fork the repository.
- Create your feature branch (
git checkout -b feature/YourAmazingFeature). - Commit your changes with a descriptive message (
git commit -m "feat: Implement YourAmazingFeature"). - Push your changes to the branch (
git push origin feature/YourAmazingFeature). - Open a pull request for review.
Please open an issue to discuss major architectural changes or feature proposals before beginning work.
This project is licensed under the Apache License 2.0. See the LICENSE file for the full text.