Smarter Way To Learning
Formulize is a feature-rich, offline-first mobile reference application designed to help Indian school students (Classes 9β12) quickly find, study, and bookmark mathematical, physical, and chemical formulas. Built with Flutter, it delivers high-performance LaTeX formula rendering, device-local bookmarks, and instant search capabilities, working entirely without internet access or user account configuration.
- Overview
- Key Features
- Tech Stack
- Screenshots (Optional)
- Project Structure
- Documentation
- Getting Started
- Available Scripts
- Deployment
- Project Status
- Contributing
- License
- Contact
Students preparing for board exams and revision struggle because formulas are scattered across textbooks and notes. Furthermore, searchable, mobile-friendly resources that work offline are difficult to find, and standard math displays look cluttered on small screens.
Formulize centralizes these formulas in one browsable, searchable catalog with proper CBSE/NCERT-aligned class and chapter structures. It works 100% offline, storing bookmarks locally without registering accounts or requiring login authentication.
- Syllabus Browser: Browse formulas organized by class (9β12), subjects (Math, Physics, Chemistry), and chapters in under 3 taps.
- LaTeX Math Rendering: Formulas are rendered in crisp, scalable vector format using
flutter_math_fork. - Global Search: Search instantly across titles, chapters, and keywords (
searchTags). - Device-Local Bookmarks: Save important formulas locally using
SharedPreferencesfor last-minute revisions, with a clear all confirmation prompt. - Fundamentals Shortcuts: Fast access to key mathematical fundamentals (Algebraic Identities, Trigonometry, Logarithms) directly from the Home screen.
- Offline-First Architecture: All content is shipped as local JSON assets; the app functions entirely offline.
- Framework: Flutter (Material 3 enabled)
- Language: Dart (SDK version
^3.10.7) - Math Rendering:
flutter_math_fork(^0.7.4) for high-fidelity LaTeX equation rendering. - Local Persistence:
shared_preferences(^2.5.4) for saving bookmark IDs locally. - Asset Storage: Structured local JSON files (
assets/class9.jsontoassets/class12.json,assets/fundamentals.json). - Icons:
cupertino_icons(^1.0.8). - Development/Build Tools:
flutter_launcher_icons(^0.13.1) andrename(^3.1.0).
(Include screenshots or GIFs of the app running in portrait mode here to showcase the Home hub, Syllabus Browser, Formula Viewer, and Bookmarks screens)
| Home Screen | Syllabus Browser | Formula Viewer | Bookmarks |
|---|---|---|---|
| [Screenshot Placeholder] | [Screenshot Placeholder] | [Screenshot Placeholder] | [Screenshot Placeholder] |
formulize/
βββ lib/
β βββ main.dart # App entry point, global theme, and MainScreen initializer
β βββ data/
β β βββ models/
β β β βββ formula_model.dart # Dart serialization model for JSON data
β β βββ source/
β β βββ formula_local_data_source.dart # Handles local JSON asset loading and merging
β βββ features/
β βββ home/
β β βββ screens/
β β β βββ main_screen.dart # Bottom navigation shell screen
β β β βββ home_screen.dart # Home hub containing search and class cards
β β βββ widgets/
β β βββ class_card.dart # Interactive class card with color gradients
β β βββ home_search_bar.dart # Stylized search bar widget
β βββ chapter_list/
β β βββ screens/
β β βββ class_detail_screen.dart # Interactive subject and chapter expansion list
β βββ formula_view/
β β βββ screens/
β β βββ formula_view_screen.dart # Main formula list viewer page and FormulaCard implementation
β βββ bookmarks/
β β βββ screens/
β β βββ bookmarks_screen.dart # Bookmark manager list with clear all FAB
β βββ search/
β βββ screens/
β βββ search_results_screen.dart # Screen displaying search result formulas
βββ assets/
β βββ class9.json # Class 9 formulas (Syllabus placeholder)
β βββ class10.json # Class 10 formulas (Syllabus placeholder)
β βββ class11.json # Class 11 formulas (Syllabus placeholder)
β βββ class12.json # Class 12 formulas (Populated)
β βββ fundamentals.json # Fundamentals formulas (Populated)
β βββ icon/ # App launcher icons
βββ test/
β βββ widget_test.dart # UI testing files
βββ android/ # Android native configuration
βββ ios/ # iOS native configuration
βββ pubspec.yaml # Flutter project dependencies and metadata configuration
βββ analysis_options.yaml # Code quality rules and lint settings
Detailed design and architecture specifications can be found under the docs/ folder:
- π 01_PRD.md β Product Requirements Document: Vision, target audience, core features, functional & non-functional requirements, and future enhancements.
- π 02_TRD.md β Technical Requirements Document: Tech stack detail, application architecture, front-end design patterns, caching, security, performance, and deployment strategy.
- π 03_AppFlow.md β Application Flow: Screen navigation map, detailed feature workflows, data flow (especially for Bookmarks and local assets), error handling, and user journey maps.
- π 04_UI_UX.md β UI/UX Design Specification: Brand guidelines, typography hierarchy, ad-hoc color system, screen layout specifications, and loading/empty/error states UI rules.
- π 05_BackendSchema.md β Backend & Data Schema: JSON model structure, logic entity relationships, local persistence schema, constraint enforcement, and api models.
To build and run the application locally, make sure you have the following installed on your machine:
- Flutter SDK (
^3.10.7or later) - Dart SDK (compatible with environment
^3.10.7) - An IDE with Flutter extensions installed (e.g. VS Code or Android Studio)
- Target setups:
- Android SDK & Emulator / connected Android Device (for Android builds)
- macOS with Xcode & CocoaPods (only if targeting iOS builds)
- Clone the repository to your local machine:
git clone https://github.com/harshitsinghal11/flutter-Formulize.git cd formulize - Fetch and install package dependencies:
flutter pub get
Since Formulize is an offline-first client application with no external backend server integrations or remote API keys, there are no environment variables or .env configuration files required to run the project.
To launch the app on your connected device or emulator in debug mode:
flutter runYou can use the following commands inside the project root for development and build tasks:
- Fetch Dependencies:
flutter pub get - Run Development App:
flutter run - Lint Check:
flutter analyze - Run Tests:
flutter test - Generate Launcher Icons:
flutter pub run flutter_launcher_icons - Rename Package:
flutter pub run rename - Clean Build Cache:
flutter clean
To build production-ready packages for deployment to the App Stores:
Build a release Android App Bundle (AAB) to upload to Google Play Console:
flutter build appbundleOr build a standalone APK:
flutter build apkBuild a release iOS bundle (requires a macOS environment with Xcode certificates configured):
flutter build ipaFormulize is currently in active development:
- Class 12 Content: Fully populated and navigable (approx. 247 formulas).
- Fundamentals Content: Fully populated and navigable (approx. 101 formulas).
- Classes 9, 10, and 11 Content: Structural placeholders configured. Content is currently in empty JSON files, showing a "Content coming soon" screen when accessed.
Contributions are welcome! Since the app is built on a modular, feature-first folder structure:
- Fork the repository and create a descriptive feature branch (e.g.,
feature/class10-content). - Implement your changes. Ensure new formulas conform to the
FormulaModelstructure defined in 05_BackendSchema.md. - Ensure no lint errors exist by running:
flutter analyze
- Submit a Pull Request describing your implementation and validation.
This is a private project (publish_to: 'none'). All rights are reserved. Unauthorized reproduction, modification, or distribution is prohibited unless explicitly permitted.
Built by Harshit β B.Tech CSE, Manav Rachna University
Feel free to reach out if you're building something similar or have questions about the implementation.