Skip to content

harshitsinghal11/flutter-Formulize

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

2 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Formulize πŸ“±

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.


Table of Contents


Overview

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.


Key Features

  • 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 SharedPreferences for 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.

Tech Stack

  • 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.json to assets/class12.json, assets/fundamentals.json).
  • Icons: cupertino_icons (^1.0.8).
  • Development/Build Tools: flutter_launcher_icons (^0.13.1) and rename (^3.1.0).

Screenshots (Optional)

(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]

Project Structure

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

Documentation

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.

Getting Started

Prerequisites

To build and run the application locally, make sure you have the following installed on your machine:

  • Flutter SDK (^3.10.7 or 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)

Installation

  1. Clone the repository to your local machine:
    git clone https://github.com/harshitsinghal11/flutter-Formulize.git
    cd formulize
  2. Fetch and install package dependencies:
    flutter pub get

Environment Variables

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.

Running Locally

To launch the app on your connected device or emulator in debug mode:

flutter run

Available Scripts

You 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

Deployment

To build production-ready packages for deployment to the App Stores:

Android

Build a release Android App Bundle (AAB) to upload to Google Play Console:

flutter build appbundle

Or build a standalone APK:

flutter build apk

iOS

Build a release iOS bundle (requires a macOS environment with Xcode certificates configured):

flutter build ipa

Project Status

Formulize 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.

Contributing

Contributions are welcome! Since the app is built on a modular, feature-first folder structure:

  1. Fork the repository and create a descriptive feature branch (e.g., feature/class10-content).
  2. Implement your changes. Ensure new formulas conform to the FormulaModel structure defined in 05_BackendSchema.md.
  3. Ensure no lint errors exist by running:
    flutter analyze
  4. Submit a Pull Request describing your implementation and validation.

License

This is a private project (publish_to: 'none'). All rights are reserved. Unauthorized reproduction, modification, or distribution is prohibited unless explicitly permitted.


Contact

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.

About

An offline-first Flutter app that helps students quickly search, view, and bookmark important Math, Physics, and Chemistry formulas.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Contributors

Languages