Skip to content

Mobile Application for Collecting Courses with 100% Discounts and Free Educational Books Available Online. Project developed as a final assignment for Integrator Course II at Universidad Tecnológica del Perú.

License

Notifications You must be signed in to change notification settings

Gatorrante/Apprende-Free-Books-and-Courses-app

Repository files navigation

APPrende+

Flutter Firebase Dart JavaScript HTML CSS

English | Español


English

Overview

APPrende+ is an educational platform that provides users with access to free courses, books, and news. The project includes a mobile application developed with Flutter and a web administration page for managing course announcements.

Features

  • User authentication with Firebase
  • Management of course announcements and courses
  • Intuitive and modern user interface
  • Integration with external APIs for content
  • Web page for course announcement administration (add, edit, delete) for administrators

Screenshots

Mobile

Homepage Books Page Courses Page
Homepage Books Page Courses Page

Administration

User Page Add Announcement Website
User Page Add Announcement

Getting Started

Prerequisites

Cloning the Repository

git clone https://github.com/Gatorrante/Apprende-Free-Books-and-Courses-app.git
cd Apprende-Free-Books-and-Courses-app

Firebase Integration

The project uses Firebase for user authentication and Firestore for database management. Follow these steps to set up Firebase correctly:

Setting Up Firebase

  1. Install Required Tools

  2. Create a Firebase Project

  3. Configure Firebase for Your Flutter App

    • From the root directory of your Flutter project, run:
      flutterfire configure
    • This command will guide you through the process of setting up Firebase for your Flutter app, including registering your app with Firebase and generating the firebase_options.dart file.
  4. Initialize Firebase in Your Flutter App

    • Open the main.dart file and import the necessary Firebase packages:
      import 'package:firebase_core/firebase_core.dart';
      import 'firebase_options.dart';
    • Initialize Firebase in the main function:
      void main() async {
        WidgetsFlutterBinding.ensureInitialized();
        await Firebase.initializeApp(
          options: DefaultFirebaseOptions.currentPlatform,
        );
        runApp(const MyApp());
      }
  5. Add Firebase Plugins

    • Add the required Firebase plugins to your Flutter project. For example, to add Firebase Authentication and Firestore:
      flutter pub add firebase_auth
      flutter pub add cloud_firestore
    • Ensure your Firebase configuration is up to date:
      flutterfire configure
  6. Rebuild Your Flutter App

    • Rebuild your Flutter app to apply the changes:
      flutter run
  7. Optional: Use Firebase Emulator for Testing

    • If you prefer to use a demo project for testing, initialize Firebase with a demo project ID:
      await Firebase.initializeApp(
        demoProjectId: "demo-project-id",
      );

Additional Resources

Running the Mobile Application

flutter pub get
flutter run

Running the Web Administration Page

  1. Navigate to the web directory.
  2. Open index.html in a web browser.

Project Structure

APPS_BOOKS_2024/
├── .dart_tool/
├── .flutter-plugins
├── .flutter-plugins-dependencies
├── .gitattributes
├── .gitignore
├── .metadata
├── .vscode/
│   └── settings.json
├── analysis_options.yaml
├── android/
│   ├── app/
│   └── build.gradle
├── assets/
│   └── screenshots/
│       ├── Add_news_page.png
│       ├── Books_page.png
│       ├── Courses_page.png
│       ├── Homepage.png
│       └── User_page.png
├── build/
├── firebase.json
├── ios/
│   └── Runner/
│       └── Info.plist
├── lib/
│   ├── main.dart                   # Main entry point of the Flutter app
│   ├── model/
│   │   └── course.dart             # Course model
│   ├── services/
│   │   ├── annas_archive_api.dart  # API service for books
│   │   └── course_service.dart     # API service for courses
│   ├── src/
│   │   └── pages/
│   │       ├── HomePage/
│   │       │   ├── HomePage.dart   # Main HomePage with tabs
│   │       │   ├── Login.dart      # Login page
│   │       │   └── widgets/
│   │       │       ├── CustomAppBar.dart
│   │       │       ├── UserPageConfig/
│   │       │       │   ├── ProfileCard.dart
│   │       │       │   ├── CategoryButtons.dart
│   │       │       │   ├── SwitchButtons.dart
│   │       │       │   ├── CoursesContainer.dart
│   │       │       │   ├── LibraryContainer.dart
│   │       │       │   ├── add_news.dart
│   │       │       │   ├── admin_settings_page.dart
│   │       │       │   └── user_management.dart
│   │       │       ├── DetalleNoticiaPage.dart
│   │       │       ├── DetalleLibroPage.dart
│   │       │       ├── course_detail_page.dart
│   │       │       ├── tabs/
│   │       │       │   ├── Principal.dart
│   │       │       │   ├── FreeCoursesPage.dart
│   │       │       │   └── libros.dart
│   │       │       └── UserPage.dart # User page with profile and settings
├── linux/
├── macos/
├── pubspec.lock
├── pubspec.yaml
├── README.md
├── test/
├── web/
│   ├── add_news.js                 # JavaScript for adding news
│   ├── index.html                  # HTML for the web admin page
│   └── styles.css                  # CSS for the web admin page
└── windows/

API Integration

The project integrates with an external API to fetch courses with 100% discount coupons. Special thanks to Huythanh0x for providing the API. Check out the repository here.

Additionally, the project uses Anna's Archive API for retrieving books.

Web Administration Page

The web administration page allows administrators to manage course announcements. Administrators can add, edit, and delete announcements. The page is built using HTML, CSS, and JavaScript, and it integrates with Firebase for authentication and Firestore for database management.

Credits

  • 100% coupon course API: Special thanks to Huythanh0x for providing the API. Check out the repository here.
  • Anna's Archive API: The project uses Anna's Archive API to retrieve books.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Español

Descripción

APPrende+ es una plataforma educativa que brinda a los usuarios acceso a cursos gratuitos, libros y anuncios de cursos nuevos. El proyecto incluye una aplicación móvil desarrollada con Flutter y una página web de administración para gestionar anuncios de cursos.

Características

  • Autenticación de usuarios con Firebase
  • Gestión de anuncios de cursos y cursos
  • Interfaz de usuario intuitiva y moderna
  • Integración con APIs externas para contenido
  • Página web para la administración de anuncios de cursos (agregar, editar, eliminar) para administradores

Capturas de Pantalla

Móvil

Página Principal Página de Libros Página de Cursos
Página Principal Página de Libros Página de Cursos

Administración

Página de Usuario Agregar Anuncio
Página de Usuario Agregar Anuncio

Comenzando

Requisitos Previos

Clonar el Repositorio

git clone https://github.com/Gatorrante/Apprende-Free-Books-and-Courses-app.git
cd Apprende-Free-Books-and-Courses-app

Integración de Firebase

El proyecto utiliza Firebase para la autenticación de usuarios y Firestore para la gestión de la base de datos. Sigue estos pasos para configurar Firebase correctamente:

Configurando Firebase

  1. Instalar Herramientas Requeridas

  2. Crear un Proyecto de Firebase

  3. Configurar Firebase para tu App de Flutter

    • Desde el directorio raíz de tu proyecto de Flutter, ejecuta:
      flutterfire configure
    • Este comando te guiará a través del proceso de configuración de Firebase para tu app de Flutter, incluyendo el registro de tu app con Firebase y la generación del archivo firebase_options.dart.
  4. Inicializar Firebase en tu App de Flutter

    • Abre el archivo y importa los paquetes necesarios de Firebase:
      import 'package:firebase_core/firebase_core.dart';
      import 'firebase_options.dart';
    • Inicializa Firebase en la función main:
      void main() async {
        WidgetsFlutterBinding.ensureInitialized();
        await Firebase.initializeApp(
          options: DefaultFirebaseOptions.currentPlatform,
        );
        runApp(const MyApp());
      }
  5. Agregar Complementos de Firebase

    • Agrega los complementos de Firebase requeridos a tu proyecto de Flutter. Por ejemplo, para agregar Firebase Authentication y Firestore:
      flutter pub add firebase_auth
      flutter pub add cloud_firestore
    • Asegúrate de que tu configuración de Firebase esté actualizada:
      flutterfire configure
  6. Reconstruir tu App de Flutter

    • Reconstruye tu app de Flutter para aplicar los cambios:
      flutter run
  7. Opcional: Usar el Emulador de Firebase para Pruebas

    • Si prefieres usar un proyecto de demostración para pruebas, inicializa Firebase con un ID de proyecto de demostración:
      await Firebase.initializeApp(
        demoProjectId: "demo-project-id",
      );

Recursos Adicionales

Ejecutar la Aplicación Móvil

flutter pub get
flutter run

Ejecutar la Página Web de Administración

  1. Navega al directorio web.
  2. Abre index.html en un navegador web.

Estructura del Proyecto

APPS_BOOKS_2024/
├── .dart_tool/
├── .flutter-plugins
├── .flutter-plugins-dependencies
├── .gitattributes
├── .gitignore
├── .metadata
├── .vscode/
│   └── settings.json
├── analysis_options.yaml
├── android/
│   ├── app/
│   └── build.gradle
├── assets/
│   └── screenshots/
│       ├── Add_news_page.png
│       ├── Books_page.png
│       ├── Courses_page.png
│       ├── Homepage.png
│       └── User_page.png
├── build/
├── firebase.json
├── ios/
│   └── Runner/
│       └── Info.plist
├── lib/
│   ├── main.dart                   # Entrada principal a la aplicación
│   ├── model/
│   │   └── course.dart             # Modelo de Cursos
│   ├── services/
│   │   ├── annas_archive_api.dart  # Servicio de APIs para libros
│   │   └── course_service.dart     # Servicio de APIs para cursos
│   ├── src/
│   │   └── pages/
│   │       ├── HomePage/
│   │       │   ├── HomePage.dart   # Menú principal
│   │       │   ├── Login.dart      # Página de Login
│   │       │   └── widgets/
│   │       │       ├── CustomAppBar.dart
│   │       │       ├── UserPageConfig/
│   │       │       │   ├── ProfileCard.dart
│   │       │       │   ├── CategoryButtons.dart
│   │       │       │   ├── SwitchButtons.dart
│   │       │       │   ├── CoursesContainer.dart
│   │       │       │   ├── LibraryContainer.dart
│   │       │       │   ├── add_news.dart
│   │       │       │   ├── admin_settings_page.dart
│   │       │       │   └── user_management.dart
│   │       │       ├── DetalleNoticiaPage.dart
│   │       │       ├── DetalleLibroPage.dart
│   │       │       ├── course_detail_page.dart
│   │       │       ├── tabs/
│   │       │       │   ├── Principal.dart 
│   │       │       │   ├── FreeCoursesPage.dart
│   │       │       │   └── libros.dart
│   │       │       └── UserPage.dart # Página del usuario y config.
├── linux/
├── macos/
├── pubspec.lock
├── pubspec.yaml
├── README.md
├── test/
├── web/
│   ├── add_news.js                 # JavaScript para agregar noticias.
│   ├── index.html                  # HTML para la web del administrador.
│   └── styles.css                  # CSS para estilos de la web.
└── windows/

Integración de API

El proyecto se integra con una API externa para obtener cursos con cupones de descuento del 100%. Un agradecimiento especial a Huythanh0x por proporcionar la API. Consulta el repositorio aquí.

Además, el proyecto utiliza la API de Anna's Archive para obtener libros.

Página Web de Administración

La página web de administración permite a los administradores gestionar anuncios de cursos. Los administradores pueden agregar, editar y eliminar anuncios. La página está construida utilizando HTML, CSS y JavaScript, y se integra con Firebase para la autenticación y Firestore para la gestión de la base de datos.

Créditos

  • API de cursos con cupón del 100%: Gracias a Huythanh0x por proporcionar la API. revisa su repositorio aquí.
  • API de Anna's Archive: El proyecto utiliza la API de Anna's Archive para obtener libros.

Licencia

Este proyecto está licenciado bajo la Licencia MIT - consulta el archivo LICENSE para más detalles.

About

Mobile Application for Collecting Courses with 100% Discounts and Free Educational Books Available Online. Project developed as a final assignment for Integrator Course II at Universidad Tecnológica del Perú.

Resources

License

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published