Skip to content

sam-in07/LEARNSPACE

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

60 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation


# πŸ“š LearnSphere - LMS

A mobile-first Learning Management System (LMS) built with Flutter to simplify online education. LearnSphere enables learners to enroll in programs, track their progress, and stay updated through notifications.

---

## πŸš€ Vision
**Simplify online education** by offering an intuitive and streamlined mobile LMS experience for learners.

---

## 🎯 Objectives
- Allow users to **browse and enroll** in educational programs.
- Enable learners to **track progress** through a friendly UI.
- Provide timely **notifications** and updates for enrolled users.
- Create a smooth, easy-to-navigate mobile learning journey.

---

## 🧭 Learner Navigation Flow

```text
Learner opens the app 
β†’ Logs in 
β†’ Browses programs 
β†’ Enrolls in a program 
β†’ Views progress 
β†’ Receives notifications

πŸ”‘ Key Features

  • πŸ” User Authentication (Login/Signup)
  • πŸ“‹ Program Listing (Explore available programs)
  • πŸ“ Enrollment System (Join selected programs)
  • πŸ“Š Progress Tracking (Monitor course advancement)
  • πŸ”” Notification System (Stay informed with alerts)

πŸ“ Folder Structure

learnsphere-lms/
β”‚
β”œβ”€β”€ lib/                             # All Dart code
β”‚   β”œβ”€β”€ main.dart                    # App entry point
β”‚   β”œβ”€β”€ blocks/                       # State management, business logic (e.g. BLoC, Cubits, controllers)
β”‚   β”œβ”€β”€ models/                       # Data models/entities (e.g. Course, User, etc.)
β”‚   β”œβ”€β”€ screens/                      # UI pages / views (Login, Home, Details, etc.)
β”‚   β”œβ”€β”€ widgets/                      # Reusable UI components (buttons, cards, etc.)
β”‚
β”œβ”€β”€ assets/                           # Images, fonts, JSON, media files
β”œβ”€β”€ pubspec.yaml                      # Flutter dependencies, assets declarations
β”œβ”€β”€ README.md                         # Project documentation & overview
β”œβ”€β”€ android/ …                        # Android-specific files (auto-generated by Flutter)
β”œβ”€β”€ ios/ …                            # iOS-specific files
β”œβ”€β”€ test/                             # Unit & widget tests  
└── … other Flutter project files …  


πŸ› οΈ Getting Started

To set up and run the project locally:

git clone https://github.com/sam-in07/LearnSphere.git
cd learnsphere-lms
flutter pub get
flutter run

πŸ§ͺ Version Control

This project uses Git for version control. βœ… Initial commit and push completed to GitHub.


πŸ“Ž Repository Link

πŸ”— LearnSphere GitHub Repository


πŸ“Š GitHub Activity Tracker

πŸ”— GitHub Tracker for LearnSphere #Tracker


πŸ“Έ UI Screenshots (Week 2 Prototype)

πŸ” Login Screen

Login Screen


🏠 Home Screen

Home Screen


πŸ“‹ Program Listing Screen

Program Listing


πŸ“„ Program Details Screen

Program Details


🧩 README Update – Week 3

πŸ”₯ Firebase Integration Setup

This project now uses Firebase Firestore to store and fetch program data dynamically for the Program Listing Screen.

Steps to Set Up Firebase in Flutter

  1. Go to the Firebase Console.

  2. Create a new project (or use an existing one).

  3. Click β€œAdd App” β†’ β€œFlutter” and follow the on-screen instructions.

  4. Download the google-services.json file and place it inside your Flutter project:

    android/app/google-services.json
    
  5. Open your pubspec.yaml file and add the following dependencies:

    dependencies:
      firebase_core: ^3.3.0
      cloud_firestore: ^5.4.4
  6. Run the following commands to initialize Firebase:

    flutter pub get
    flutterfire configure
  7. Initialize Firebase in your app by updating the main function:

    void main() async {
      WidgetsFlutterBinding.ensureInitialized();
      await Firebase.initializeApp();
      runApp(MyApp());
    }

πŸ“‚ Firestore Data Structure

Firestore Collection: programs

Each document inside programs represents a course category (e.g., data_structures, java, python, etc.).

Example Document:

{
  "program_name": "Data Structures",
  "logo_url": "assets/images/program_images/datastructure.png",
  "total_courses": "5",
  "total_learners": "63k"
}

πŸ’» Fetching and Displaying Data in Flutter

The Program Listing Screen uses a StreamBuilder to fetch data in real time from Firestore.

Example Code:

import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:flutter/material.dart';

class ProgramListingScreen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text('Programs')),
      body: StreamBuilder<QuerySnapshot>(
        stream: FirebaseFirestore.instance.collection('programs').snapshots(),
        builder: (context, snapshot) {
          if (snapshot.connectionState == ConnectionState.waiting) {
            return Center(child: CircularProgressIndicator());
          } else if (snapshot.hasError) {
            return Center(child: Text('Error loading data'));
          }

          final programs = snapshot.data!.docs;

          return ListView.builder(
            itemCount: programs.length,
            itemBuilder: (context, index) {
              var data = programs[index].data() as Map<String, dynamic>;
              return Card(
                margin: EdgeInsets.all(8),
                child: ListTile(
                  leading: Image.asset(data['logo_url']),
                  title: Text(data['program_name']),
                  subtitle: Text(
                    '${data['total_courses']} Courses β€’ ${data['total_learners']} Learners',
                  ),
                ),
              );
            },
          );
        },
      ),
    );
  }
}

βš™οΈ Features Added This Week

  • Connected Program Listing Screen to Firestore.
  • Replaced hardcoded data with live Firestore data.
  • Added loading indicators and error messages for better user experience.
  • Updated documentation and code comments for clarity.

πŸ“˜ Next Steps

  • Implement a Program Details Screen that displays specific course details for each program.
  • Add user feedback form connected to the Firestore feedback collection.

About

LEARNSPACE ~ is an Internship Project

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •