Skip to content

devthanseemx/fixit-community

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

20 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

FixIt Community Logo

FixIt Community

A community-driven app for sharing tech problems and their fixing steps.
Built with Flutter & Firebase

Flutter Dart Firebase Android License


πŸ“± Overview

FixIt Community is a mobile application that lets people come together to solve everyday technology problems. Users post the issues they run into β€” from a flickering laptop screen to a printer that won't connect β€” along with the step-by-step fixes that worked for them. Others can browse a searchable, category-filtered feed, open a problem for the full write-up, and build their own profile in the community.

Whether you are a hobbyist, a student, or an IT enthusiast, FixIt Community is your shared knowledge base for troubleshooting electronics, computers, mobile devices, networking gear, and more.

πŸ’‘ Demo mode β€” The app ships with an offline demo mode (lib/config/app_config.dart) that seeds realistic data so the whole experience is runnable and testable without a network connection or a Firebase project. Flip the switch to go live against Cloud Firestore.


✨ Features

  • πŸš€ Animated splash screen β€” Branded intro with a fade/scale animation that remembers returning users and routes them straight to the feed.
  • πŸ‘€ Username sign-up / login β€” Lightweight, password-less onboarding. Pick a unique @username and you're in; the session persists locally via shared_preferences.
  • 🏠 Community feed β€” A reverse-chronological list of problems posted by the community, each showing title, category, author, and timestamp.
  • πŸ—‚οΈ Category filtering β€” Quick category chips (Electronics, Computer, Mobile, Home Repair, Laptop, Networking, Printer, Software, Gaming Console, Other) to narrow the feed.
  • πŸ”Ž Full-text search β€” Instant, case-insensitive search across title, description, category, author, and fixing steps (multi-word queries use AND semantics).
  • βž• Post a problem β€” Compose a problem with a title, category, detailed description, and any number of ordered fixing steps.
  • πŸ“– Problem detail view β€” Dedicated screen with the full description and a numbered list of fixing steps.
  • βš™οΈ Profile management β€” Edit your display name, upload a profile picture from the gallery (stored as base64), and delete your account (which also removes the problems you authored).
  • 🧭 Floating glassmorphic navbar β€” A modern, blurred bottom navigation bar with Home / Post / Profile destinations.
  • πŸŒ— Material 3 design β€” Polished, consistent UI built on a custom light theme with the Poppins font and a warm amber/black palette.

πŸ› οΈ Technology Stack

Layer Technology
Framework Flutter 3.x (Dart SDK ^3.12.2)
Language Dart 3
Backend / DB Firebase Core + Cloud Firestore
Local storage shared_preferences (session persistence)
Media image_picker (profile photos)
Typography google_fonts β€” Poppins
Design system Material 3 (useMaterial3: true)
Platform Android (with release signing config)

πŸ—οΈ Architecture

The app follows a clean, layered structure that keeps the UI completely decoupled from the data backend.

        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
        β”‚                Screens (UI)                  β”‚
        β”‚   Splash Β· Username Β· Home Β· Add Β· Profile   β”‚
        β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                            β”‚  (never talks to Firebase directly)
                            β–Ό
        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
        β”‚            DataService (single entry         β”‚
        β”‚         point for all persistence)           β”‚
        β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                    β”‚                        β”‚
                    β–Ό                        β–Ό
        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
        β”‚  Cloud Firestore      β”‚   β”‚  In-memory demo store β”‚
        β”‚  (production)         β”‚   β”‚  (offline demo mode)  β”‚
        β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Key architectural decisions

  • DataService as the only data gateway. Every screen calls DataService instead of FirebaseFirestore directly. All methods return plain Map<String, dynamic> / List data β€” never Firestore document types β€” so the UI stays backend-agnostic and unit-testable.
  • Demo mode toggle. lib/config/app_config.dart exposes demoModeEnabled. When true, DataService serves seeded in-memory data; when false (or via --dart-define=DEMO=false), it performs real Cloud Firestore operations. The UI behaves identically in both modes.
  • Session persistence. The signed-in @username is stored in shared_preferences; the splash screen reads it to decide whether to route to the feed or the username screen.
  • Feature-first folder layout. Code is organized by responsibility (config, core/theme, data, services, utils, widgets, screens) rather than by file type only.

πŸ“‚ Project Structure

fixit_community/
β”œβ”€β”€ android/                     # Native Android project & signing config
β”œβ”€β”€ assets/
β”‚   └── images/
β”‚       └── app_icon.png         # App logo / launcher icon
β”œβ”€β”€ lib/
β”‚   β”œβ”€β”€ config/
β”‚   β”‚   └── app_config.dart      # Global demo-mode switch
β”‚   β”œβ”€β”€ core/
β”‚   β”‚   └── theme/
β”‚   β”‚       β”œβ”€β”€ app_colors.dart  # Central color palette
β”‚   β”‚       └── app_theme.dart   # Material 3 light theme (Poppins)
β”‚   β”œβ”€β”€ data/
β”‚   β”‚   └── demo_data.dart       # Offline seed data (categories, problems, user)
β”‚   β”œβ”€β”€ services/
β”‚   β”‚   └── data_service.dart    # Single persistence entry point
β”‚   β”œβ”€β”€ utils/
β”‚   β”‚   └── problem_filter.dart  # Pure, testable search-match logic
β”‚   β”œβ”€β”€ widgets/                 # Reusable UI (navbar, cards, chips, header…)
β”‚   β”œβ”€β”€ screens/
β”‚   β”‚   β”œβ”€β”€ authentication/      # Splash & Username screens
β”‚   β”‚   β”œβ”€β”€ home/                # Feed & Problem detail
β”‚   β”‚   β”œβ”€β”€ post/                # Add Problem
β”‚   β”‚   └── account/             # Profile
β”‚   β”œβ”€β”€ firebase_options.dart    # Generated Firebase config
β”‚   └── main.dart                # App entry point
β”œβ”€β”€ screenshots/                 # App screenshots
β”œβ”€β”€ test/                        # Widget & unit tests
β”œβ”€β”€ pubspec.yaml
└── README.md

πŸ–ΌοΈ Screenshots

Splash Screen Username Screen Home Screen Add Problem

Profile


βš™οΈ Installation

Prerequisites

  • Flutter SDK 3.x
  • Dart SDK ^3.12.2
  • An Android device / emulator (or iOS toolchain for iPhone builds)
  • A Firebase project (only required for live/production mode)

Steps

  1. Clone the repository

    git clone <your-repository-url>
    cd fixit_community
  2. Install dependencies

    flutter pub get
  3. (Optional) Configure Firebase

    The app is pre-wired to the Firebase project fixit-community-6ec36 via lib/firebase_options.dart. To use your own backend:

    • Create a Firebase project and add an Android app with package com.devthanseem.fixitcommunity.
    • Download google-services.json into android/app/.
    • Regenerate config with the FlutterFire CLI or replace lib/firebase_options.dart.
  4. (Optional) Disable demo mode

    Open lib/config/app_config.dart and set:

    bool demoModeEnabled = false;

    Or at build time: flutter run --dart-define=DEMO=false.

  5. Run the app

    flutter run

πŸ“ In demo mode (demoModeEnabled = true, the default) the app runs fully offline with seeded data β€” no Firebase setup required.


πŸ“¦ Download / Build APK

The build/ directory is git-ignored, so no prebuilt binary is committed to the repository. Generate a release APK locally:

flutter build apk --release

The signed release artifact will be created at:

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

Release signing

Release builds use an upload key configured in a local, git-ignored android/key.properties (already present). If that file is absent, the build gracefully falls back to debug keys. To set up your own signing:

  1. Generate an upload keystore and place key.properties + the .jks under android/.
  2. Re-run flutter build apk --release.

You can also produce an Android App Bundle for Play Store distribution:

flutter build appbundle --release
# β†’ build/app/outputs/bundle/release/app-release.aab

πŸš€ Future Improvements

  • πŸ” Account authentication β€” Replace password-less usernames with email/password or OAuth (Google, Apple) sign-in.
  • πŸ’¬ Comments & reactions β€” Let the community discuss fixes and upvote helpful solutions.
  • πŸ”” Push notifications β€” Alert users when someone replies to or solves their problem.
  • 🌐 Social features β€” Follow other members and curate a personalized feed.
  • πŸ–ΌοΈ Rich media in problems β€” Attach photos/screenshots to problems and steps (currently profile images only).
  • πŸ”„ Real-time updates β€” Switch the feed to Firestore listeners for live refresh instead of one-shot loads.
  • πŸŒ™ Dark mode β€” Add a dark theme alongside the current light theme.
  • 🌍 Localization β€” Internationalize strings for a wider audience.
  • πŸ§ͺ Expanded test coverage β€” Grow the widget/unit tests (search, data service, profile flows).
  • πŸ“± iOS & web support β€” Broaden platform targets beyond Android.

πŸ“„ License

This project is licensed under the MIT License.

MIT License

Copyright (c) 2026 FixIt Community

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

πŸ‘¨β€πŸ’» Developer

FixIt Community is designed and developed by devthanseemx.

  • πŸ“¦ Package ID: com.devthanseem.fixitcommunity
  • πŸ”₯ Firebase project: fixit-community-6ec36
  • πŸ’‘ Feedback, bug reports, and contributions are welcome!

Made with ❀️ and Flutter Β· πŸ”§ FixIt Community

About

A modern Flutter application that enables users to discover, publish, and share IT troubleshooting solutions through a community-driven knowledge base.

Topics

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors

Languages