Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Feature] - Develop Presentation Generator #117

Open
35 tasks
Ahmedr275 opened this issue Nov 19, 2024 · 1 comment · May be fixed by #124
Open
35 tasks

[Feature] - Develop Presentation Generator #117

Ahmedr275 opened this issue Nov 19, 2024 · 1 comment · May be fixed by #124
Labels
type:new-feature For proposals or implementation of entirely new features or functionalities.

Comments

@Ahmedr275
Copy link
Contributor

Ahmedr275 commented Nov 19, 2024

Develop Presentation Generator Tool

Description

As an educator, I want to generate engaging slide presentations for my class based on specific topics, text, or uploaded files so that I can save time and create visually appealing teaching materials tailored to my students' grade level and subject requirements.

The tool should allow users to:

  • Specify a grade level.
  • Define the number of slides (columns).
  • Input a topic for the presentation.
  • Provide standards/objectives using text input or file uploads.
  • Optionally include additional comments or customizations for the presentation.
  • Accept file uploads (one file per prompt) in supported formats:
    • Upload: CSV, PDF, DOCX, PPT, Plain Text
    • URLs: YouTube Video, Website, Google Sheets

Design

Presentation Generator
Presentation Generator-1
Presentation Generator-2
Presentation Generator-3

Acceptance Criteria

  • Feature Requirements:

    • Input Handling:
      • Users can specify a grade level from a dropdown menu (e.g., Pre-K to University).
      • Users can select the number of slides (columns) from a dropdown menu (e.g., 1 to 10).
      • Users can provide a topic for the presentation using:
        • Direct text input.
      • Users can input standards/objectives via:
        • Direct text input.
        • Document attachment (one file per prompt) in the following formats:
          • Upload: CSV, PDF, DOCX, PPT, Plain Text
          • URLs: YouTube Video, Website, Google Sheets
      • Users can optionally include additional comments or customizations via:
        • Direct text input.
        • Document attachment (one file per prompt) in the following formats:
          • Upload: CSV, PDF, DOCX, PPT, Plain Text
          • URLs: YouTube Video, Website, Google Sheets
    • Presentation Generation Logic:
      • The tool generates slide content based on the provided inputs, ensuring:
        • Slides are tailored to the topic and standards/objectives.
        • Content adheres to the specified grade level.
      • The tool structures the presentation logically, distributing content evenly across the number of slides.
    • Output Format:
      • The presentation is generated as text output detailing each slide's content. Additional improvement is to make the output downloadable slides in PPTX format.
      • Each slide includes:
        • A heading or title.
        • Content relevant to the provided topic and grade level.
        • Optionally, visuals or prompts for additional engagement.
  • Technical Implementation:

    • Create a new folder within app/features/ named presentation_generator.
    • Implement the executor function in core.py with input parameters matching the tool's functionality, including type hints.
    • Use tools.py for abstractions and helper functions to keep core.py clean and maintainable.
    • Include a metadata.json file defining the input parameters for proper validation.
    • Utilize a prompt/ folder for AI-driven generation prompts if necessary.
    • Implement logging and error handling as per platform standards.
  • Unit Tests:

    • Write unit tests for all functions and classes in core.py and tools.py using PyTest.
      • Tests cover:
        • Normal operation with valid inputs.
        • Edge cases and invalid inputs.
        • Error handling and exceptions.
  • Code Quality and Documentation:

    • Ensure code follows best practices for readability and maintainability.
      • Use consistent naming conventions.
      • Include type hints for all functions and methods.
      • Avoid redundant or unnecessary code.
    • Add docstrings to all functions and classes explaining their purpose and usage.
    • Provide comments within the code where necessary to explain complex logic.
  • Integration and Testing:

    • Ensure the feature integrates seamlessly with the existing Marvel AI platform.
      • The executor function is compatible with the router.py layer for request handling.
      • Inputs are validated as per the platform's requirements.
    • Test the entire feature from input handling to output generation.
      • Verify that users can input their data and receive the expected outputs without errors.

Sample Input and Output

Input:

  • Grade Level: University
  • Number of Slides: 5
  • Topic: Introduction to Python Variables
  • Standards/Objectives: Refer to CS101_Introduction_to_Python_Variables.pdf
  • Additional Comments: None

Output:

Slide Content
Slide 1 Introduction to Python: Variables and Data Types
Slide 2 What is a Variable?
- A container for storing data values in Python
- Can hold various data types
- Can be reassigned
Example:
x = 5 assigns value 5 to variable x.
Slide 3 Data Types in Python
- Integers (int): Whole numbers
- Floats (float): Numbers with decimal points
- Strings (str): Text enclosed in quotes
- Booleans (bool).
Slide 4 Declaring and Using Variables
- Use descriptive names
- Stick to lowercase with underscores
- Avoid starting with numbers or special characters.
Example:
age = 20.
Slide 5 Hands-on Exercise
Write a program that:
- Assigns values to variables name, age, and grade
- Prints these variables in a sentence.
Example:
name = "Alice".

Resources

  1. Design Mockup

Please ensure that each of these criteria is fulfilled for the issue to be considered complete.

@Ahmedr275 Ahmedr275 added the type:new-feature For proposals or implementation of entirely new features or functionalities. label Nov 19, 2024
@Ahmedr275 Ahmedr275 moved this to Todo in Issues board Nov 19, 2024
@AaronSosaRamos AaronSosaRamos linked a pull request Nov 26, 2024 that will close this issue
@AaronSosaRamos AaronSosaRamos linked a pull request Nov 26, 2024 that will close this issue
@AaronSosaRamos
Copy link
Collaborator

#124 needs to be checked against acceptance criteria

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
type:new-feature For proposals or implementation of entirely new features or functionalities.
Projects
Status: Todo
Development

Successfully merging a pull request may close this issue.

2 participants