From f74bab9ed4f586f6291d11b69fbcae13f5cc6efb Mon Sep 17 00:00:00 2001 From: bennettldavid Date: Fri, 4 Apr 2025 22:32:49 -0600 Subject: [PATCH] # 2ticketss 2 complementary command-line tools for GitHub issue management - **00-jira-to-gh-issues**: A Rust tool that converts Jira CSV exports to GitHub issue markdown files compatible with gh-issue-generator. It handles messy CSV data and preserves issue metadata - **01-gh-issue-generator**: A Rust tool that creates GitHub issues from Markdown files with YAML front matter. It parses structured Markdown, supports batch processing, and integrates with GitHub CLI --- .gitignore | 8 + 00-jira-to-gh-issues/Cargo.toml | 17 + 00-jira-to-gh-issues/README.md | 232 + 00-jira-to-gh-issues/src/main.rs | 548 + 01-gh-issue-generator/.gitignore | 23 + 01-gh-issue-generator/Cargo.toml | 20 + 01-gh-issue-generator/README.md | 425 + 01-gh-issue-generator/SAMPLE_DRAFT_ISSUE.md | 55 + 01-gh-issue-generator/SAMPLE_ISSUE.md | 67 + 01-gh-issue-generator/examples/batch.md | 127 + .../examples/issues/bugs/login-error.md | 57 + .../examples/issues/feature.md | 51 + 01-gh-issue-generator/examples/jira-import.md | 17140 ++++++++++++++++ 01-gh-issue-generator/src/main.rs | 845 + Cargo.toml | 6 + README.md | 5 + 16 files changed, 19626 insertions(+) create mode 100644 00-jira-to-gh-issues/Cargo.toml create mode 100644 00-jira-to-gh-issues/README.md create mode 100644 00-jira-to-gh-issues/src/main.rs create mode 100644 01-gh-issue-generator/.gitignore create mode 100644 01-gh-issue-generator/Cargo.toml create mode 100644 01-gh-issue-generator/README.md create mode 100644 01-gh-issue-generator/SAMPLE_DRAFT_ISSUE.md create mode 100644 01-gh-issue-generator/SAMPLE_ISSUE.md create mode 100644 01-gh-issue-generator/examples/batch.md create mode 100644 01-gh-issue-generator/examples/issues/bugs/login-error.md create mode 100644 01-gh-issue-generator/examples/issues/feature.md create mode 100644 01-gh-issue-generator/examples/jira-import.md create mode 100644 01-gh-issue-generator/src/main.rs create mode 100644 Cargo.toml diff --git a/.gitignore b/.gitignore index ab951f8..b056558 100644 --- a/.gitignore +++ b/.gitignore @@ -20,3 +20,11 @@ Cargo.lock # and can be added to the global gitignore or merged into this file. For a more nuclear # option (not recommended) you can uncomment the following to ignore the entire idea folder. #.idea/ + +# Generated output directories +output/ +00-jira-to-gh-issues/output/ +01-gh-issue-generator/report/ + +# macOS files +.DS_Store \ No newline at end of file diff --git a/00-jira-to-gh-issues/Cargo.toml b/00-jira-to-gh-issues/Cargo.toml new file mode 100644 index 0000000..81247fc --- /dev/null +++ b/00-jira-to-gh-issues/Cargo.toml @@ -0,0 +1,17 @@ +[package] +name = "jira-to-gh-issues" +version = "0.1.0" +edition = "2021" +description = "A tool to convert Jira CSV exports to GitHub issue markdown format" +authors = ["b3"] + +[dependencies] +clap = { version = "4.4", features = ["derive"] } +csv = "1.2" +anyhow = "1.0" +chrono = "0.4" +serde = { version = "1.0", features = ["derive"] } +dirs = "5.0" +toml = "0.8" +log = "0.4" +env_logger = "0.10" \ No newline at end of file diff --git a/00-jira-to-gh-issues/README.md b/00-jira-to-gh-issues/README.md new file mode 100644 index 0000000..3e77bc0 --- /dev/null +++ b/00-jira-to-gh-issues/README.md @@ -0,0 +1,232 @@ +# Jira to GitHub Issues Converter + +A Rust command-line tool that converts Jira CSV exports to GitHub issue markdown files compatible with the [gh-issue-generator](../01-gh-issue-generator) tool. + +## Prerequisites + +- [Rust](https://www.rust-lang.org/tools/install) installed (cargo, rustc) +- Basic familiarity with Jira CSV exports + +## Installation + +### Option 1: Build from source + +1. Clone this repository +```bash +git clone https://github.com/bee8333/2ticketss.git +cd 2ticketss/00-jira-to-gh-issues +``` + +2. Build the application: +```bash +cargo build --release +``` + +3. The executable will be in `target/release/jira-to-gh-issues` + +4. Optional: Add to your PATH +```bash +# Linux/macOS +cp target/release/jira-to-gh-issues ~/.local/bin/ + +# or add the following to your .bashrc or .zshrc +export PATH="$PATH:/path/to/2ticketss/00-jira-to-gh-issues/target/release" +``` + +### Option 2: Install with Cargo + +If you have Rust installed, you can install directly with: +```bash +cargo install --path . +``` + +## Exporting Issues from Jira + +1. In Jira, go to the issue list view (with all filters applied) +2. Click "Export" and select "CSV (All fields)" +3. Save the CSV file + +Required Jira fields: +- Summary (required) +- Issue key (required) + +Recommended fields (for best results): +- Issue Type +- Priority +- Description +- Assignee +- Reporter +- Created +- Labels + +## Usage + +```bash +jira-to-gh-issues [OPTIONS] --input +``` + +Arguments: +- `--input, -i `: Path to the CSV file exported from Jira (required) + +Options: +- `--output, -o `: Directory where the markdown files will be saved +- `--status, -s `: Default status for the issues (draft or ready) +- `--verbose, -v`: Increase verbosity level (can be used multiple times: -v, -vv) +- `--config, -c `: Path to config file + +### Logging Options + +You can control log verbosity in two ways: + +1. Using the `--verbose` flag: + - `-v`: Debug level logging + - `-vv`: Trace level logging + +2. Using the `RUST_LOG` environment variable: + ```bash + # Set global log level + RUST_LOG=debug jira-to-gh-issues --input issues.csv + + # Set per-module log level + RUST_LOG=jira_to_gh_issues=trace,csv=warn jira-to-gh-issues --input issues.csv + ``` + +## Configuration + +The tool supports configuration files to store default settings. Configuration is searched in these locations (in order): + +1. Path specified with `--config` option +2. `.jira-to-gh-issues.toml` in current directory +3. `~/.jira-to-gh-issues.toml` in home directory +4. `~/.config/jira-to-gh-issues/config.toml` in XDG config directory + +A default configuration file will be created at `~/.config/jira-to-gh-issues/config.toml` if none exists. + +### Configuration Options + +```toml +# Default output directory +output_dir = "00-jira-to-gh-issues/output" + +# Default issue status (draft or ready) +default_status = "ready" + +# Required fields in CSV +required_fields = ["Summary", "Issue key"] +``` + +### Creating or Editing Configuration + +You can manually create or edit the configuration file, or run the tool once to create a default configuration automatically. + +For example, to set custom defaults: + +```bash +mkdir -p ~/.config/jira-to-gh-issues +cat > ~/.config/jira-to-gh-issues/config.toml << EOF +output_dir = "github-issues/jira-exports" +default_status = "draft" +required_fields = ["Summary", "Issue key", "Description"] +EOF +``` + +## Example Workflow + +### 1. Export issues from Jira +```bash +# Assuming you've exported Jira issues to "sprint-backlog.csv" +``` + +### 2. Convert to GitHub issue format +```bash +jira-to-gh-issues --input sprint-backlog.csv --output github-issues +``` + +### 3. Create GitHub issues using gh-issue-generator +```bash +cd .. +gh-issue-generator --repo myuser/myrepo github-issues/20240405123045/batch.md +``` + +## How It Works + +1. The tool reads a CSV file exported from Jira +2. For each issue in the CSV, it: + - Extracts relevant information (title, description, labels, etc.) + - Converts it to the GitHub issue markdown format with YAML front matter + - Writes individual markdown files for each issue + - Creates a batch file containing all issues +3. Output is saved in a timestamped directory to avoid overwriting previous conversions +4. An error log is generated for any issues that couldn't be processed + +## Output Format + +The tool generates: +1. Individual markdown files for each issue (named after the Jira issue key) +2. A batch file containing all issues in the format expected by gh-issue-generator +3. An error log file listing any processing issues + +Each generated file follows the format required by the gh-issue-generator tool: + +```markdown +--- +title: Issue title +status: ready (or draft) +labels: + - label1 + - label2 +assignees: + - assignee1 +--- + +# Issue title + +## Description + +Issue description... + +## Metadata + +- **Jira Issue**: JIRA-123 +- **Created**: Creation date +- **Reporter**: Reporter name +``` + +## Mapping Rules + +| Jira Field | GitHub Issue Field | +|---------------|---------------------------| +| Summary | title | +| Issue Type | Converted to a label | +| Priority | High/Critical → priority label | +| Labels | labels | +| Description | Description section | +| Assignee | assignees | +| Reporter | Listed in metadata | +| Created | Listed in metadata | +| Issue Key | Listed in metadata & filename | + +## Troubleshooting + +### CSV Import Issues +- Ensure the CSV export from Jira includes the required fields (Summary, Issue key) +- If the import fails with "Missing required columns", verify your Jira export contains these field names +- For malformed CSV files, try opening in a spreadsheet application and re-saving + +### Character Encoding +- If you see corrupted characters, ensure your CSV is UTF-8 encoded +- Some Jira instances export in different encodings depending on region settings + +### Large Exports +- For very large exports (1000+ issues), consider splitting into multiple files +- Processing large files may require more memory + +## Limitations + +- Complex Jira markup may not convert perfectly to Markdown +- Attachments from Jira issues are not transferred +- Comments are not included in the conversion + +## License + +MIT \ No newline at end of file diff --git a/00-jira-to-gh-issues/src/main.rs b/00-jira-to-gh-issues/src/main.rs new file mode 100644 index 0000000..066919b --- /dev/null +++ b/00-jira-to-gh-issues/src/main.rs @@ -0,0 +1,548 @@ +use std::fs::{self, File}; +use std::io::{Write, Read}; +use std::path::PathBuf; +use std::collections::HashMap; + +use anyhow::{Context, Result, anyhow}; +use chrono::Local; +use clap::Parser; +use csv::ReaderBuilder; +use dirs::home_dir; +use log::{info, warn, error, debug, trace, LevelFilter}; +use serde::{Deserialize, Serialize}; + +/// Jira CSV to GitHub Issues Converter +/// +/// This tool converts Jira CSV exports to GitHub issue markdown files +/// that are compatible with the gh-issue-generator tool. It handles field +/// mapping, formatting conversions, and generates both individual markdown +/// files and a batch file for bulk creation of GitHub issues. +#[derive(Parser, Debug)] +#[command( + author, + version, + about, + long_about = "A command-line utility that converts Jira CSV exports to GitHub issue markdown files. +It extracts key fields from the Jira export, including summary, description, issue type, priority, +labels, assignees, and other metadata, then converts them to GitHub-compatible format. + +The tool creates a timestamped output directory containing: +- Individual markdown files for each issue +- A batch file containing all issues +- An error log tracking any issues encountered during processing + +For best results, ensure your Jira export includes at least the Summary and Issue key fields." +)] +struct Args { + /// Input CSV file exported from Jira + /// + /// Path to the CSV file exported from Jira containing issues to convert. + /// Export this file from Jira by going to the issue list view, + /// clicking 'Export' and selecting 'CSV (All fields)'. + #[arg(short, long, required = true)] + input: PathBuf, + + /// Output directory for generated markdown files + /// + /// Directory where the markdown files will be saved. A timestamped + /// subdirectory will be created within this path to avoid overwriting + /// previous conversions. + #[arg(short, long)] + output: Option, + + /// Default status to use (draft or ready) + /// + /// Determines whether created issues are marked as draft or ready. + /// Draft issues will not be created when using gh-issue-generator. + #[arg(short, long)] + status: Option, + + /// Verbosity level (can be used multiple times) + /// + /// Controls the amount of information displayed during execution: + /// -v: Debug level (detailed information for troubleshooting) + /// -vv: Trace level (very verbose, all operations logged) + /// + /// You can also use the RUST_LOG environment variable instead. + #[arg(short, long, action = clap::ArgAction::Count)] + verbose: u8, + + /// Path to config file + /// + /// Path to a TOML configuration file. If not specified, the tool will + /// search for configuration in standard locations: + /// - .jira-to-gh-issues.toml in current directory + /// - ~/.jira-to-gh-issues.toml in home directory + /// - ~/.config/jira-to-gh-issues/config.toml + #[arg(short = 'c', long)] + config: Option, +} + +#[derive(Debug, Serialize, Deserialize)] +struct Config { + /// Default output directory + output_dir: Option, + + /// Default issue status (draft or ready) + default_status: Option, + + /// Required fields in CSV (comma-separated list) + #[serde(default = "default_required_fields")] + required_fields: Vec, +} + +fn default_required_fields() -> Vec { + vec!["Summary".to_string(), "Issue key".to_string()] +} + +impl Default for Config { + fn default() -> Self { + Self { + output_dir: Some("00-jira-to-gh-issues/output".to_string()), + default_status: Some("ready".to_string()), + required_fields: default_required_fields(), + } + } +} + +impl Config { + /// Load configuration from file or create default if not exists + fn load(config_path: Option<&PathBuf>) -> Result { + // If path is provided, try to load from there + if let Some(path) = config_path { + debug!("Loading config from specified path: {}", path.display()); + return Self::load_from_file(path); + } + + // Try to load from default locations + let config_paths = [ + // Current directory + PathBuf::from(".jira-to-gh-issues.toml"), + // Home directory + home_dir().map(|h| h.join(".jira-to-gh-issues.toml")).unwrap_or_default(), + // XDG config directory + home_dir().map(|h| h.join(".config/jira-to-gh-issues/config.toml")).unwrap_or_default(), + ]; + + for path in &config_paths { + if path.exists() { + debug!("Found config file at: {}", path.display()); + return Self::load_from_file(path); + } + } + + // No config file found, use defaults + debug!("No config file found, using defaults"); + Ok(Self::default()) + } + + /// Load configuration from a specific file + fn load_from_file(path: &PathBuf) -> Result { + let mut file = File::open(path) + .context(format!("Failed to open config file: {}", path.display()))?; + + let mut content = String::new(); + file.read_to_string(&mut content) + .context("Failed to read config file")?; + + toml::from_str(&content) + .context("Failed to parse config file as TOML") + } + + /// Save configuration to file + fn save(&self, path: &PathBuf) -> Result<()> { + debug!("Saving config to: {}", path.display()); + + // Create parent directories if they don't exist + if let Some(parent) = path.parent() { + fs::create_dir_all(parent)?; + } + + let content = toml::to_string_pretty(self) + .context("Failed to serialize config to TOML")?; + + let mut file = File::create(path) + .context(format!("Failed to create config file: {}", path.display()))?; + + file.write_all(content.as_bytes()) + .context("Failed to write config file")?; + + Ok(()) + } + + /// Create a default config file if it doesn't exist + fn create_default_if_not_exists() -> Result<()> { + let default_path = home_dir() + .map(|h| h.join(".config/jira-to-gh-issues/config.toml")) + .ok_or_else(|| anyhow!("Failed to determine home directory"))?; + + if !default_path.exists() { + debug!("Creating default config file at: {}", default_path.display()); + let default_config = Self::default(); + default_config.save(&default_path)?; + info!("Created default config file at: {}", default_path.display()); + println!("Created default config file at: {}", default_path.display()); + } + + Ok(()) + } +} + +struct ProcessingStats { + total_rows: usize, + successful_conversions: usize, + empty_rows: usize, + parsing_errors: usize, + required_field_missing: HashMap, +} + +impl ProcessingStats { + fn new() -> Self { + Self { + total_rows: 0, + successful_conversions: 0, + empty_rows: 0, + parsing_errors: 0, + required_field_missing: HashMap::new(), + } + } + + fn print_summary(&self) { + println!("\nProcessing Statistics:"); + println!(" Total rows in CSV: {}", self.total_rows); + println!(" Successfully converted: {}", self.successful_conversions); + println!(" Empty rows skipped: {}", self.empty_rows); + println!(" Rows with parsing errors: {}", self.parsing_errors); + + if !self.required_field_missing.is_empty() { + println!("\n Required fields missing:"); + for (field, count) in &self.required_field_missing { + println!(" {}: {} occurrences", field, count); + } + } + } +} + +fn main() -> Result<()> { + let args = Args::parse(); + + // Initialize logger with appropriate level + let log_level = match args.verbose { + 0 => LevelFilter::Info, + 1 => LevelFilter::Debug, + _ => LevelFilter::Trace, + }; + + // Initialize the logger, respecting the RUST_LOG env var if set + let mut builder = env_logger::Builder::new(); + + // If RUST_LOG is set, use that config; otherwise use our default based on -v flags + match std::env::var("RUST_LOG") { + Ok(_) => { + // RUST_LOG is set, initialize with default env_logger behavior + builder.init(); + }, + Err(_) => { + // RUST_LOG not set, use our verbosity flag + builder + .filter_level(log_level) + .format_timestamp(Some(env_logger::fmt::TimestampPrecision::Seconds)) + .init(); + + // Log a hint about RUST_LOG for users who use -v + if args.verbose > 0 { + debug!("Tip: You can also control log level with the RUST_LOG environment variable"); + } + } + }; + + info!("Starting Jira to GitHub Issues Converter"); + + // Load configuration + let config = Config::load(args.config.as_ref())?; + debug!("Loaded configuration: {:?}", config); + + // Create default config if it doesn't exist (only in normal operation) + if args.verbose == 0 { + if let Err(e) = Config::create_default_if_not_exists() { + warn!("Failed to create default config file: {}", e); + } + } + + // Determine output directory (command line takes precedence over config) + let output_dir = match (&args.output, &config.output_dir) { + (Some(path), _) => path.clone(), + (None, Some(dir)) => { + info!("Using output directory from config: {}", dir); + PathBuf::from(dir) + }, + (None, None) => { + let default_path = PathBuf::from("00-jira-to-gh-issues/output"); + info!("Using default output directory: {}", default_path.display()); + default_path + } + }; + + // Determine issue status (command line takes precedence over config) + let status = match (&args.status, &config.default_status) { + (Some(s), _) => s.clone(), + (None, Some(s)) => { + info!("Using default status from config: {}", s); + s.clone() + }, + (None, None) => { + let default_status = "ready".to_string(); + info!("Using default status: {}", default_status); + default_status + } + }; + + debug!("Input file: {}", args.input.display()); + debug!("Output directory: {}", output_dir.display()); + debug!("Default status: {}", status); + + // Create output directory if it doesn't exist + fs::create_dir_all(&output_dir)?; + + // Read CSV file + let file = File::open(&args.input) + .with_context(|| format!("Failed to open input file: {}", args.input.display()))?; + + let mut rdr = ReaderBuilder::new() + .has_headers(true) + .flexible(true) // Allow for variable number of fields + .from_reader(file); + + // Read headers to identify field positions + let headers = rdr.headers()?.clone(); + info!("Found {} columns in CSV", headers.len()); + + // Check for required columns + let required_fields: Vec<&str> = config.required_fields.iter().map(|s| s.as_str()).collect(); + validate_headers(&headers, &required_fields)?; + + // Prepare timestamp directory for output + let timestamp = Local::now().format("%Y%m%d%H%M%S").to_string(); + let batch_dir = output_dir.join(timestamp); + fs::create_dir_all(&batch_dir)?; + info!("Created output directory: {}", batch_dir.display()); + + // Create batch file for all issues + let mut batch_file = File::create(batch_dir.join("batch.md"))?; + writeln!(batch_file, "# Jira Issues Batch\n")?; + writeln!(batch_file, "Generated from Jira export on {}\n", Local::now().format("%Y-%m-%d %H:%M:%S"))?; + + // Process each row in the CSV + let mut stats = ProcessingStats::new(); + let mut error_log = File::create(batch_dir.join("error_log.txt"))?; + + for (row_idx, result) in rdr.records().enumerate() { + stats.total_rows += 1; + + let record = match result { + Ok(r) => r, + Err(e) => { + stats.parsing_errors += 1; + let error_msg = format!("Error reading row {}: {}\n", row_idx + 1, e); + error!("{}", error_msg.trim()); + writeln!(error_log, "{}", error_msg)?; + continue; + } + }; + + // Extract fields safely with fallback to empty string + let summary = get_field_by_name(&record, &headers, "Summary"); + let issue_key = get_field_by_name(&record, &headers, "Issue key"); + let issue_type = get_field_by_name(&record, &headers, "Issue Type"); + let priority = get_field_by_name(&record, &headers, "Priority"); + let description = get_field_by_name(&record, &headers, "Description"); + let assignee = get_field_by_name(&record, &headers, "Assignee"); + let reporter = get_field_by_name(&record, &headers, "Reporter"); + let created = get_field_by_name(&record, &headers, "Created"); + + // Validate required fields + let mut missing_fields = Vec::new(); + if summary.is_empty() { missing_fields.push("Summary"); } + if issue_key.is_empty() { missing_fields.push("Issue key"); } + + if !missing_fields.is_empty() { + stats.empty_rows += 1; + for field in &missing_fields { + *stats.required_field_missing.entry(field.to_string()).or_insert(0) += 1; + } + + let error_msg = format!("Row {}: Missing required fields: {}\n", + row_idx + 1, missing_fields.join(", ")); + warn!("{}", error_msg.trim()); + writeln!(error_log, "{}", error_msg)?; + continue; + } + + trace!("Processing row {}: Issue Key = {}, Summary = {}", row_idx + 1, issue_key, summary); + + // Collect all labels from any "Labels" columns + let mut labels = Vec::new(); + for (i, header) in headers.iter().enumerate() { + if header == "Labels" && i < record.len() { + let label = record.get(i).unwrap_or("").trim(); + if !label.is_empty() { + labels.push(label.to_string()); + } + } + } + + // Convert to GitHub issue format + let issue_content = convert_to_github_issue( + &summary, &issue_key, &issue_type, &priority, + &labels, &description, &assignee, &reporter, + &created, &status + ); + + // Generate a filename based on the issue key + // Sanitize issue key to create a valid filename + let safe_issue_key = sanitize_filename(issue_key); + let filename = format!("{}.md", safe_issue_key); + let filepath = batch_dir.join(&filename); + + debug!("Writing issue to file: {}", filepath.display()); + + // Write to individual file + let mut file = File::create(&filepath) + .with_context(|| format!("Failed to create output file: {}", filepath.display()))?; + file.write_all(issue_content.as_bytes())?; + + // Also append to batch file + writeln!(batch_file, "---ISSUE---\n")?; + writeln!(batch_file, "{}", issue_content)?; + + stats.successful_conversions += 1; + } + + // Print summary + stats.print_summary(); + + info!("Successfully converted {} Jira issues to GitHub issue format", stats.successful_conversions); + println!("\nSuccessfully converted {} Jira issues to GitHub issue format", stats.successful_conversions); + println!("Individual issue files are in: {}", batch_dir.display()); + println!("Batch file is at: {}", batch_dir.join("batch.md").display()); + println!("Error log is at: {}", batch_dir.join("error_log.txt").display()); + + Ok(()) +} + +/// Validate CSV headers for required fields +fn validate_headers(headers: &csv::StringRecord, required_fields: &[&str]) -> Result<()> { + let mut missing = Vec::new(); + + for &field in required_fields { + if !headers.iter().any(|h| h == field) { + missing.push(field); + } + } + + if !missing.is_empty() { + return Err(anyhow!("Missing required columns in CSV: {}. Please ensure your Jira export includes these fields.", + missing.join(", "))); + } + + Ok(()) +} + +/// Sanitize a string to be used as a filename +fn sanitize_filename(s: &str) -> String { + s.chars() + .map(|c| if c.is_alphanumeric() || c == '-' || c == '_' || c == '.' { c } else { '_' }) + .collect() +} + +/// Safely get a field by column name, handling missing columns +fn get_field_by_name(record: &csv::StringRecord, headers: &csv::StringRecord, name: &str) -> String { + for (i, header) in headers.iter().enumerate() { + if header == name && i < record.len() { + return record.get(i).unwrap_or("").to_string(); + } + } + String::new() +} + +/// Convert a Jira issue to GitHub issue markdown format +fn convert_to_github_issue( + summary: &str, + issue_key: &str, + issue_type: &str, + priority: &str, + labels: &[String], + description: &str, + assignee: &str, + reporter: &str, + created: &str, + default_status: &str +) -> String { + // Determine appropriate labels based on issue type and priority + let mut gh_labels = Vec::new(); + + // Add issue type as a label + let issue_type_label = match issue_type { + "Bug" | "Bug⚠️" => "bug", + "Feature" | "Feature🔺" => "enhancement", + "Refactor" | "Refactor♻️" => "refactor", + "Task" | "Task✔️" => "task", + _ => "other", + }; + gh_labels.push(issue_type_label.to_string()); + + // Add priority as a label if significant + if priority.contains("High") || priority.contains("Critical") { + gh_labels.push("high-priority".to_string()); + } + + // Add any Jira labels + for label in labels { + for l in label.split(',') { + let trimmed = l.trim(); + if !trimmed.is_empty() { + gh_labels.push(trimmed.to_string()); + } + } + } + + // Format labels for YAML front matter + let labels_yaml = if gh_labels.is_empty() { + "".to_string() + } else { + let mut result = "labels:\n".to_string(); + for label in gh_labels { + result.push_str(&format!(" - {}\n", label)); + } + result + }; + + // Format assignees for YAML front matter + let assignees_yaml = if assignee.is_empty() { + "".to_string() + } else { + format!("assignees:\n - {}\n", assignee) + }; + + // Format the description, replacing any Jira formatting with Markdown + let formatted_description = description + .replace("\\n", "\n") + .replace("{noformat}", "```") + .replace("!image-", "![image-"); + + // Create GitHub issue content with YAML front matter + let content = format!( + "---\ntitle: {}\nstatus: {}\n{}{}---\n\n# {}\n\n## Description\n\n{}\n\n## Metadata\n\n- **Jira Issue**: {}\n- **Created**: {}\n- **Reporter**: {}\n", + summary, + default_status, + labels_yaml, + assignees_yaml, + summary, + formatted_description, + issue_key, + created, + reporter + ); + + content +} \ No newline at end of file diff --git a/01-gh-issue-generator/.gitignore b/01-gh-issue-generator/.gitignore new file mode 100644 index 0000000..bfb4206 --- /dev/null +++ b/01-gh-issue-generator/.gitignore @@ -0,0 +1,23 @@ +# Generated by Cargo +/target/ + +# Remove Cargo.lock from gitignore if creating an executable, leave it for libraries +# More information here https://doc.rust-lang.org/cargo/guide/cargo-toml-vs-cargo-lock.html +Cargo.lock + +# Reports generated by the tool +/report/ + +# These are backup files generated by rustfmt +**/*.rs.bk + +# MSVC Windows builds of rustc generate these, which store debugging information +*.pdb + +# macOS files +.DS_Store + +# IDE files +.idea/ +.vscode/ +*.iml \ No newline at end of file diff --git a/01-gh-issue-generator/Cargo.toml b/01-gh-issue-generator/Cargo.toml new file mode 100644 index 0000000..38c06a3 --- /dev/null +++ b/01-gh-issue-generator/Cargo.toml @@ -0,0 +1,20 @@ +[package] +name = "gh-issue-generator" +version = "0.1.0" +edition = "2021" +authors = ["b3"] +description = "Tool to generate GitHub issues from markdown files" + +[dependencies] +clap = { version = "4.4", features = ["derive"] } +serde = { version = "1.0", features = ["derive"] } +serde_yaml = "0.9" +chrono = "0.4" +walkdir = "2.4" +regex = "1.10" +thiserror = "1.0" +anyhow = "1.0" +log = "0.4" +env_logger = "0.10" +dirs = "5.0" +toml = "0.8" diff --git a/01-gh-issue-generator/README.md b/01-gh-issue-generator/README.md new file mode 100644 index 0000000..9d1bdf1 --- /dev/null +++ b/01-gh-issue-generator/README.md @@ -0,0 +1,425 @@ +# GitHub Issue Generator + +A Rust command-line tool that generates GitHub issues from Markdown files. This tool parses structured Markdown files with YAML front matter and uses the GitHub CLI to create issues. + +## Prerequisites + +- [GitHub CLI](https://cli.github.com/) installed and authenticated +- [Rust](https://www.rust-lang.org/tools/install) installed (cargo, rustc) + +## Installation + +### Option 1: Build from source + +1. Clone this repository +```bash +git clone https://github.com/bee8333/2ticketss.git +cd 2ticketss/01-gh-issue-generator +``` + +2. Build the application: +```bash +cargo build --release +``` + +3. The executable will be in `target/release/gh-issue-generator` + +4. Optional: Add to your PATH +```bash +# Linux/macOS +cp target/release/gh-issue-generator ~/.local/bin/ + +# or add the following to your .bashrc or .zshrc +export PATH="$PATH:/path/to/2ticketss/01-gh-issue-generator/target/release" +``` + +### Option 2: Install with Cargo + +If you have Rust installed, you can install directly with: +```bash +cargo install --path . +``` + +### GitHub CLI Authentication + +Before using this tool, you must authenticate the GitHub CLI: + +```bash +# Login to GitHub +gh auth login + +# Verify you're authenticated +gh auth status +``` + +Make sure you have the appropriate scopes (repo for private repositories) during authentication. + +## Usage + +```bash +gh-issue-generator [OPTIONS] ... +``` + +Arguments: +- `...`: One or more paths to Markdown files or directories containing Markdown files + +Options: +- `-r, --repo `: GitHub repository in format owner/repo (e.g., "octocat/Hello-World") +- `-d, --dry-run`: Run in dry-run mode (don't actually create issues) +- `-v, --verbose`: Increase verbosity level (can be used multiple times: -v, -vv) +- `-c, --config `: Path to config file + +### Logging Options + +You can control log verbosity in two ways: + +1. Using the `--verbose` flag: + - `-v`: Debug level logging + - `-vv`: Trace level logging + +2. Using the `RUST_LOG` environment variable: + ```bash + # Set global log level + RUST_LOG=debug gh-issue-generator --repo owner/repo issues/ + + # Set per-module log level + RUST_LOG=gh_issue_generator=trace,walkdir=warn gh-issue-generator --repo owner/repo issues/ + ``` + +Examples: +```bash +# Process a single Markdown file +gh-issue-generator --repo myuser/myrepo issues/feature-request.md + +# Process all Markdown files in a directory +gh-issue-generator --repo myuser/myrepo issues/ + +# Process multiple files +gh-issue-generator --repo myuser/myrepo issues/bug-1.md issues/feature-1.md + +# Dry run (don't create actual issues) +gh-issue-generator --repo myuser/myrepo --dry-run issues/ + +# Use a specific config file +gh-issue-generator --config my-config.toml issues/ + +# Use increased verbosity for troubleshooting +gh-issue-generator --repo myuser/myrepo --verbose issues/ +``` + +## Configuration + +The tool supports configuration files to store default settings. Configuration is searched in these locations (in order): + +1. Path specified with `--config` option +2. `.gh-issue-generator.toml` in current directory +3. `~/.gh-issue-generator.toml` in home directory +4. `~/.config/gh-issue-generator/config.toml` in XDG config directory + +A default configuration file will be created at `~/.config/gh-issue-generator/config.toml` if none exists. + +### Configuration Options + +```toml +# Default GitHub repository (optional) +# If specified, you can omit --repo command line option +default_repo = "myuser/myrepo" + +# Report output directory (default: "report") +report_dir = "report" +``` + +### Creating or Editing Configuration + +You can manually create or edit the configuration file, or run the tool once to create a default configuration automatically. + +For example, to set a default repository: + +```bash +mkdir -p ~/.config/gh-issue-generator +cat > ~/.config/gh-issue-generator/config.toml << EOF +default_repo = "myuser/myrepo" +report_dir = "github-issues/reports" +EOF +``` + +## Complete Workflow Examples + +### Example 1: Creating Feature Requests + +1. Create a feature request Markdown file: + +```bash +mkdir -p issues/features +cat > issues/features/search-feature.md << 'EOF' +--- +title: Implement advanced search functionality +status: ready +labels: + - enhancement + - search +assignees: + - developer1 +milestone: v2.0 +--- + +## Description + +We need to add advanced search capabilities to improve user experience. + +## Requirements + +- [ ] Support fuzzy search matching +- [ ] Allow filtering by multiple criteria +- [ ] Add search history feature + +## Technical Considerations + +- Consider using Elasticsearch +- Should be optimized for performance +EOF +``` + +2. Create the GitHub issue: + +```bash +gh-issue-generator --repo myuser/myrepo issues/features/search-feature.md +``` + +### Example 2: Converting from Jira and Batch Creating + +1. Convert Jira issues to GitHub format: + +```bash +cd ../00-jira-to-gh-issues +./target/release/jira-to-gh-issues --input sprint-tickets.csv --output ../issues +cd .. +``` + +2. Create all issues at once: + +```bash +cd 01-gh-issue-generator +./target/release/gh-issue-generator --repo myuser/myrepo ../issues/20240405123045/batch.md +``` + +## Markdown Format + +Each Markdown file should have YAML front matter at the beginning of the file, followed by the issue description. + +The front matter must be enclosed between `---` lines and contain at least a `title` field. + +### Front Matter Fields + +| Field | Required | Description | +|-------|----------|-------------| +| `title` | Yes | Issue title | +| `status` | No | Issue status: "draft" or "ready" (default: "ready") | +| `labels` | No | Array of labels to apply to the issue | +| `assignees` | No | Array of GitHub usernames to assign the issue to | +| `milestone` | No | Milestone to add the issue to | +| `project` | No | GitHub project to add the issue to | +| `parent` | No | Issue number or URL of a parent issue | + +### Issue Body + +The content after the front matter becomes the issue body. It can contain any Markdown formatting, including: +- Task lists +- Code blocks +- Images +- Links +- Tables +- etc. + +### Example + +```markdown +--- +title: Add support for OAuth2 authentication +status: ready +labels: + - enhancement + - security +assignees: + - octocat +milestone: v1.0 +project: Project Board +parent: 42 +--- + +## Description + +We need to add support for OAuth2 authentication to improve security. + +## Tasks + +- [ ] Research OAuth2 providers +- [ ] Implement OAuth2 flow +- [ ] Add tests +- [ ] Update documentation + +## Additional Context + +This is needed for compliance with our security requirements. +``` + +### Draft Issues + +Issues marked with `status: draft` will not be created in GitHub. They will be reported as skipped in the summary. + +## Batch Files + +The tool also supports processing multiple issues from a single file. This is useful for creating related issues in a single operation. + +### Batch File Format + +Batch files should: +1. Start with any introductory content (optional) +2. Use the delimiter `---ISSUE---` to separate individual issues +3. Each issue section must include its own YAML front matter and body + +### Example Batch File + +```markdown +# Sprint Planning Issues + +This file contains all issues for the upcoming sprint. + +---ISSUE--- + +--- +title: Implement login feature +status: ready +labels: + - feature +--- + +## Description +Add user login functionality... + +---ISSUE--- + +--- +title: Update homepage design +status: ready +labels: + - ui +--- + +## Description +Refresh the homepage design... + +---ISSUE--- + +--- +title: Database migration planning +status: draft +--- + +## Description +Plan the database migration... +``` + +### Processing Batch Files + +Process a batch file the same way as a regular file: + +```bash +gh-issue-generator --repo myuser/myrepo sprint-planning.md +``` + +The tool will create each non-draft issue as a separate GitHub issue. + +## Report Generation + +After processing all input files, the tool creates a timestamped report directory in `report/YYYY-MM-DD-HH-MM/`. The report contains: + +1. A summary.md file with details of all processed issues +2. Copies of all processed Markdown files + - Files for successfully created issues will have a comment with the issue URL + - Files for failed issues will have a comment with the error message + +## Parent-Child Relationship + +If an issue specifies a `parent` field, the tool will add a comment to the created issue linking it to the parent issue. The parent can be specified as: +- A GitHub issue number (e.g., `42`) +- A full GitHub issue URL (e.g., `https://github.com/owner/repo/issues/42`) + +## Troubleshooting + +### GitHub CLI Authentication Issues + +If you encounter authentication issues: +```bash +# Check your GitHub CLI authentication status +gh auth status + +# Re-authenticate if needed +gh auth login +``` + +### Permission Issues + +Ensure your GitHub user has permission to create issues in the target repository. + +### Rate Limiting + +If you're creating many issues, you might hit GitHub's API rate limits. The tool doesn't currently implement rate limit handling, so you might need to wait before running again. + +### Common Errors + +| Error | Possible Solution | +|-------|------------------| +| `No such file or directory` | Check the file paths you're providing | +| `Failed to parse YAML front matter` | Ensure your YAML is properly formatted | +| `failed to fetch resource: ...` | Check your network connection and GitHub authentication | +| `Repository not found` | Verify the repository exists and you have access to it | + +## Best Practices + +- Use `--dry-run` to test your issue files before creating actual issues +- Organize your issue files in a logical directory structure +- Use consistent naming conventions for your issue files +- Include detailed information in your issue descriptions to minimize follow-up questions + +## License + +MIT + +## AI-Assisted Issue Generation + +You can use agentic assistants like Claude Projects or Cursor IDE to help generate issue markdown files. Here are template prompts you can use: + +### Prompt for Generating a Single Issue + +``` +Create a GitHub issue markdown file with YAML front matter for the following project feature: + +Feature description: [your feature description] +Key requirements: +- [requirement 1] +- [requirement 2] + +The issue should include: +- A clear title +- Appropriate labels (choose from: bug, enhancement, documentation, feature, refactor) +- Detailed description +- Acceptance criteria +- Any technical considerations +``` + +### Prompt for Generating a Batch of Related Issues + +``` +Create a batch file containing GitHub issues for a sprint focused on [feature area]. + +Include 3-5 related issues that would be needed to implement this feature area. +Each issue should have appropriate front matter with title, labels, etc. +Make sure the issues are properly separated with the ---ISSUE--- delimiter. + +The issues should cover different aspects like: +- Initial implementation +- UI/UX improvements +- Testing +- Documentation +``` \ No newline at end of file diff --git a/01-gh-issue-generator/SAMPLE_DRAFT_ISSUE.md b/01-gh-issue-generator/SAMPLE_DRAFT_ISSUE.md new file mode 100644 index 0000000..96398e1 --- /dev/null +++ b/01-gh-issue-generator/SAMPLE_DRAFT_ISSUE.md @@ -0,0 +1,55 @@ +--- +title: Implement payment gateway integration +status: draft +labels: + - feature + - payments + - backend +assignees: + - developer3 +milestone: v1.1 +project: Development Roadmap +--- + +# Payment Gateway Integration + +## Overview + +We need to integrate with a payment gateway to handle subscription and one-time payments. + +## Requirements + +- Support for credit card payments +- Subscription management +- Invoicing +- Webhooks for payment events +- Handling failed payments and retries + +## Options to Evaluate + +- [ ] Stripe +- [ ] PayPal +- [ ] Braintree +- [ ] Square + +## Notes + +This issue is currently in draft because we need to: +1. Finalize which payment provider to use +2. Determine pricing tiers +3. Get legal approval for terms of service + +## Tasks (Preliminary) + +- [ ] Research payment gateways and their fees +- [ ] Create comparison matrix of features +- [ ] Discuss with legal team about compliance requirements +- [ ] Draft initial integration architecture +- [ ] Create test accounts with potential providers + +## Questions to Answer + +- What are our transaction volume estimates? +- Do we need international payment support? +- What currencies do we need to support? +- Are there specific compliance requirements (PCI-DSS)? \ No newline at end of file diff --git a/01-gh-issue-generator/SAMPLE_ISSUE.md b/01-gh-issue-generator/SAMPLE_ISSUE.md new file mode 100644 index 0000000..7914b9c --- /dev/null +++ b/01-gh-issue-generator/SAMPLE_ISSUE.md @@ -0,0 +1,67 @@ +--- +title: Implement user authentication service +status: ready +labels: + - feature + - security + - backend +assignees: + - developer1 + - developer2 +milestone: v1.0 +project: Development Roadmap +parent: 42 +--- + +# User Authentication Service Implementation + +## Overview + +We need to implement a comprehensive user authentication service that handles registration, login, password reset, and account management. + +## Requirements + +- Secure password handling with bcrypt +- JWT token generation and validation +- Email verification flow +- Two-factor authentication support +- Rate limiting for login attempts +- Session management + +## Tasks + +- [ ] Design authentication database schema +- [ ] Implement user registration endpoint +- [ ] Add email verification flow +- [ ] Create login endpoint with JWT token generation +- [ ] Implement password reset functionality +- [ ] Add two-factor authentication +- [ ] Set up rate limiting for login attempts +- [ ] Implement session management +- [ ] Write unit and integration tests +- [ ] Create API documentation + +## Technical Notes + +``` +POST /api/auth/register +{ + "email": "user@example.com", + "password": "securePassword", + "name": "User Name" +} +``` + +Authentication should follow OAuth 2.0 standards where applicable. + +## Related Resources + +- [JWT Best Practices](https://auth0.com/blog/a-look-at-the-latest-draft-for-jwt-bcp/) +- [OWASP Authentication Cheat Sheet](https://cheatsheetseries.owasp.org/cheatsheets/Authentication_Cheat_Sheet.html) + +## Acceptance Criteria + +1. All authentication endpoints pass security review +2. Password storage follows current best practices +3. Login and registration flows have appropriate rate limiting +4. All user flows are documented in the API docs \ No newline at end of file diff --git a/01-gh-issue-generator/examples/batch.md b/01-gh-issue-generator/examples/batch.md new file mode 100644 index 0000000..c36c789 --- /dev/null +++ b/01-gh-issue-generator/examples/batch.md @@ -0,0 +1,127 @@ +# Batch Issues Example + +This file demonstrates how to use our tool with a single batch file containing multiple issues. +To use this approach, save this as a markdown file and run: + +``` +gh-issue-generator --repo owner/repo batch.md +``` + +Note: Each issue must be separated by the delimiter `---ISSUE---` + +---ISSUE--- + +--- +title: Implement user registration flow +status: ready +labels: + - feature + - frontend + - backend +assignees: + - frontend-dev + - backend-dev +milestone: v1.0 +project: User Management +--- + +## Description + +Create a complete user registration flow including email verification. + +## Requirements + +- Registration form with validation +- Email verification process +- Welcome email +- Database schema updates + +## Tasks + +- [ ] Design registration form +- [ ] Implement frontend validation +- [ ] Create backend API endpoints +- [ ] Set up email verification system +- [ ] Update user database schema +- [ ] Add welcome email template + +---ISSUE--- + +--- +title: Add product search functionality +status: ready +labels: + - feature + - search +milestone: v1.0 +project: Product Catalog +--- + +## Description + +Implement search functionality for the product catalog. + +## Requirements + +- Search by product name, description, and tags +- Autocomplete suggestions +- Filter by category and price range +- Sort results by relevance, price, or rating + +## Technical Approach + +Use Elasticsearch for the search index and implement a React component for the frontend. + +---ISSUE--- + +--- +title: Optimize image loading performance +status: draft +labels: + - performance + - frontend +--- + +## Description + +Optimize image loading to improve page performance and Core Web Vitals metrics. + +## Ideas to Consider + +- Implement lazy loading for images +- Use responsive images with srcset +- Add image compression pipeline +- Consider using a CDN for image delivery + +This is currently in draft because we need to gather performance metrics first. + +---ISSUE--- + +--- +title: Update third-party dependencies +status: ready +labels: + - maintenance + - security +assignees: + - devops-team +--- + +## Description + +Update all third-party dependencies to their latest versions to address security vulnerabilities. + +## Dependencies to Update + +- React and related packages +- Backend frameworks +- Database drivers +- Testing libraries + +## Steps + +1. Review current dependencies +2. Check for security advisories +3. Create upgrade plan +4. Test upgrades in staging +5. Deploy to production \ No newline at end of file diff --git a/01-gh-issue-generator/examples/issues/bugs/login-error.md b/01-gh-issue-generator/examples/issues/bugs/login-error.md new file mode 100644 index 0000000..646b054 --- /dev/null +++ b/01-gh-issue-generator/examples/issues/bugs/login-error.md @@ -0,0 +1,57 @@ +--- +title: Fix login error with special characters in password +status: ready +labels: + - bug + - security + - critical +assignees: + - backend-dev +milestone: v1.0.1 +project: Bug Fixes +parent: 123 +--- + +# Login Error with Special Characters in Password + +## Bug Description + +Users are unable to log in when their password contains certain special characters (specifically `#`, `&`, and `%`). The login form submits successfully but returns a 400 error. + +## Steps to Reproduce + +1. Create a user account with a password containing one of the special characters: `#`, `&`, or `%` +2. Log out of the account +3. Attempt to log in with the correct credentials +4. Observe the error message and failed login + +## Expected Behavior + +Login should succeed with the correct credentials regardless of special characters in the password. + +## Actual Behavior + +When submitting the login form with credentials containing special characters, the request fails with a 400 Bad Request error. The following error appears in the console: + +``` +POST https://api.example.com/auth/login 400 (Bad Request) +Error: {"error":"Invalid request parameters"} +``` + +## Environment + +- **Browser**: Chrome 98.0.4758.102, Firefox 97.0.1 +- **OS**: Windows 10, macOS Monterey 12.2.1 +- **Backend Version**: v1.2.3 + +## Technical Analysis + +Initial investigation suggests that the password is not being properly URL-encoded before being sent to the backend, causing the server to reject the request. + +## Possible Fix + +Add proper URL encoding to the login form submission or update the backend to handle special characters in the request payload correctly. + +## Severity + +Critical - Affects user authentication and prevents access to the application. \ No newline at end of file diff --git a/01-gh-issue-generator/examples/issues/feature.md b/01-gh-issue-generator/examples/issues/feature.md new file mode 100644 index 0000000..f82466c --- /dev/null +++ b/01-gh-issue-generator/examples/issues/feature.md @@ -0,0 +1,51 @@ +--- +title: Add dark mode support +status: ready +labels: + - enhancement + - ui + - accessibility +assignees: + - ui-designer + - frontend-dev +milestone: v2.0 +project: UI Improvements +--- + +# Dark Mode Support + +## Description + +We need to add a dark mode option to our application to improve accessibility and user experience in low-light environments. + +## Requirements + +- Toggle switch in user settings +- System preference detection (respect user's OS preference) +- Persistent setting (remember user's choice) +- Properly themed components for all UI elements +- Appropriate contrast ratios for accessibility compliance + +## Tasks + +- [ ] Create dark color palette +- [ ] Add theme toggle component in settings +- [ ] Set up theme context/provider +- [ ] Implement system preference detection +- [ ] Refactor components to use theme variables +- [ ] Add theme persistence in user settings +- [ ] Test across all major browsers and devices +- [ ] Verify accessibility compliance + +## Technical Approach + +We should use CSS variables and a theme provider context to implement the theming system. This will allow us to switch themes without requiring a page reload. + +## Resources + +- [WCAG Contrast Guidelines](https://www.w3.org/WAI/WCAG21/Understanding/contrast-minimum.html) +- [Material Design Dark Theme](https://material.io/design/color/dark-theme.html) + +## Implementation Notes + +The main challenges will be ensuring all third-party components also respect the theme, and making sure we maintain proper contrast ratios in both themes. \ No newline at end of file diff --git a/01-gh-issue-generator/examples/jira-import.md b/01-gh-issue-generator/examples/jira-import.md new file mode 100644 index 0000000..30f54e0 --- /dev/null +++ b/01-gh-issue-generator/examples/jira-import.md @@ -0,0 +1,17140 @@ +# Jira Issues Batch + +Generated from Jira export on 2025-04-04 22:08:21 + +---ISSUE--- + +--- +title: sort by in teacher view +status: ready +labels: + - enhancement +--- + +# sort by in teacher view + +## Description + +The sorting is working in the teacher view + +## Metadata + +- **Jira Issue**: TUT-705 +- **Created**: 04/Apr/25 5:24 PM +- **Reporter**: Ted + +---ISSUE--- + +--- +title: locker page - issue with monocle and shirts +status: ready +labels: + - bug +assignees: + - Peter Apazidis +--- + +# locker page - issue with monocle and shirts + +## Description + +If selected the monocle is equipped as if it is a hat, which means any hat that the student’s character is wearing will be unequipped and the monocle will be rendered over any other glasses being worn. Upon selecting certain shirts, the image of the shirt on the items page will change to a different shirt. Finally, the golden aviators will display over other glasses if equipped. + +## Metadata + +- **Jira Issue**: TUT-704 +- **Created**: 04/Apr/25 9:39 AM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: Improve / make document preview +status: ready +labels: + - enhancement +--- + +# Improve / make document preview + +## Description + +![image-20250402-210911.png|width=968,height=972,alt="image-20250402-210911.png"! + +Q: Is the idea to preview the first page of uploaded files in the manage curriculum view of uploaded files? +OR is it to enable file upload in chat interface, and add preview? +if for chat interface, UI guidance start: + +[https://claude.ai/share/e86fd542-8f51-4c89-ab1d-4642335394b8|https://claude.ai/share/e86fd542-8f51-4c89-ab1d-4642335394b8|smart-link] +if for previewing files in manage curriculum, they are stored in S3: +[https://claude.ai/share/718a384d-ef5f-4562-85fd-86a4afa5121a|https://claude.ai/share/718a384d-ef5f-4562-85fd-86a4afa5121a|smart-link] + +## Metadata + +- **Jira Issue**: TUT-703 +- **Created**: 02/Apr/25 3:11 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Refactor Frontend to be Responsive +status: ready +labels: + - refactor + - Aditya +--- + +# Refactor Frontend to be Responsive + +## Description + + + +## Metadata + +- **Jira Issue**: TUT-702 +- **Created**: 02/Apr/25 2:33 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Deployed Front End - voice functionality non-functional (Authorization / API Key Issue) +status: ready +labels: + - bug + - high-priority +--- + +# Deployed Front End - voice functionality non-functional (Authorization / API Key Issue) + +## Description + +When a user tries to use the voice-mode in the deployed “[https://www.tutechy-demo.win|https://www.tutechy-demo.win]” application, it fails. the developer console logs show: + +```detail: +{status: "needs_authorization",…} + message: + "Neither authorization header nor xi-api-key received, please provide one." + status: + "needs_authorization"``` + +I suspect that our eleven-labs api key is not being stored / passed properly - needs investigation + +## Metadata + +- **Jira Issue**: TUT-701 +- **Created**: 02/Apr/25 12:12 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: fix connection string in prompt service +status: ready +labels: + - enhancement +--- + +# fix connection string in prompt service + +## Description + +![image-20250402-163212.png|width=661,height=207,alt="image-20250402-163212.png"! + +## Metadata + +- **Jira Issue**: TUT-700 +- **Created**: 02/Apr/25 10:32 AM +- **Reporter**: Ted + +---ISSUE--- + +--- +title: Frontend - Improve Codebase Structure +status: ready +labels: + - refactor +--- + +# Frontend - Improve Codebase Structure + +## Description + +Improve file naming conventions + +* services directory; files should all have “nameService.ts” or all just “name” + +Cut fat - remove extraneous files. + +[https://docs.google.com/document/d/1-kvotTOPBx_rdHs4xxh6KPdnL9-v6PHO-g5mnOyf9SM/edit?usp=sharing|https://docs.google.com/document/d/1-kvotTOPBx_rdHs4xxh6KPdnL9-v6PHO-g5mnOyf9SM/edit?usp=sharing|smart-link] + +## Metadata + +- **Jira Issue**: TUT-699 +- **Created**: 01/Apr/25 9:13 AM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Remove Nimish's Team Access - Github & AWS +status: ready +labels: + - enhancement +assignees: + - Flynn Cruse +--- + +# Remove Nimish's Team Access - Github & AWS + +## Description + +We’re onboarding Aditya; will be meeting with Nimish to inform him of their removal from our project. + +## Metadata + +- **Jira Issue**: TUT-698 +- **Created**: 01/Apr/25 9:05 AM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Fix typo - Calendar not Calender! +status: ready +labels: + - enhancement +assignees: + - Flynn Cruse +--- + +# Fix typo - Calendar not Calender! + +## Description + +*"Calendar" refers to a system for organizing days, weeks, and months, while "calender" describes a machine that smooths or glazes paper or cloth.* + +![image-20250401-142552.png|width=912,height=528,alt="image-20250401-142552.png"! + +## Metadata + +- **Jira Issue**: TUT-697 +- **Created**: 01/Apr/25 8:26 AM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Enabling "Renaming Units" in manage curriculum view +status: ready +labels: + - enhancement +assignees: + - Ted +--- + +# Enabling "Renaming Units" in manage curriculum view + +## Description + + + +## Metadata + +- **Jira Issue**: TUT-696 +- **Created**: 31/Mar/25 5:56 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Create data compliance forms +status: ready +labels: + - task +assignees: + - Max Brie +--- + +# Create data compliance forms + +## Description + +Data compliance forms we should refine into documents and share with schools: +[https://chatgpt.com/share/e/67eaeb25-e7a8-8007-bb46-1348508c52fd|https://chatgpt.com/share/e/67eaeb25-e7a8-8007-bb46-1348508c52fd|smart-link] + +Flynn created templates in the above chat gpt conversation for each of the following documents, they need to be refactored into more professional documents we can give to schools: + +* Beta Terms of Service +* Beta Compliance Waiver +* Tutechy Beta Compliance Roadmap +* Safe Usage Guidelines for Tutechy Beta +* Document 1: Beta Safe Use Pledge (Printable PDF-Friendly Format) +* Document 2: Parent Communication Template (Email or Handout) + +![image-20250331-235500.png|width=512,height=362,alt="image-20250331-235500.png"! + +Lmk if you have any issues accessing. + +Max has begun formatting into documents: [https://docs.google.com/document/d/1mFxbKkU2pGgntgpTWF7EZH1inxGhD88R9TEyNetsGvw/edit?usp=sharing|https://docs.google.com/document/d/1mFxbKkU2pGgntgpTWF7EZH1inxGhD88R9TEyNetsGvw/edit?usp=sharing|smart-link] + +## Metadata + +- **Jira Issue**: TUT-695 +- **Created**: 31/Mar/25 5:55 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: remove topic from assesment prisma +status: ready +labels: + - enhancement +--- + +# remove topic from assesment prisma + +## Description + +this field is no longer needed. need to remove on frontend and db layer. + +## Metadata + +- **Jira Issue**: TUT-694 +- **Created**: 31/Mar/25 3:35 PM +- **Reporter**: Ted + +---ISSUE--- + +--- +title: Voice Mode Touch-Ups (Integral problems) +status: ready +labels: + - bug +--- + +# Voice Mode Touch-Ups (Integral problems) + +## Description + +[https://github.com/RightPathAI/Tutechy-Frontend/pull/267|https://github.com/RightPathAI/Tutechy-Frontend/pull/267|smart-link] +still having some minor bugs with integral problems, it reading the “slash” from “\, dx” at the end of + +## Metadata + +- **Jira Issue**: TUT-693 +- **Created**: 29/Mar/25 7:51 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Camera Tooltip for Zoom +status: ready +labels: + - task +--- + +# Camera Tooltip for Zoom + +## Description + +* *Add instructions in your UI:* +** Add a note in your interface: "If you're on a video call, please turn off your camera in the calling application before using this feature." +* *Handle the situation gracefully:* +** Provide an alternative input method (file upload) when camera access fails +** Add a special "Zoom mode" that tells users to disable their camera in Zoom first + +## Metadata + +- **Jira Issue**: TUT-691 +- **Created**: 29/Mar/25 7:48 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Set Data Retention Fields & Policies +status: ready +labels: + - task +--- + +# Set Data Retention Fields & Policies + +## Description + +*Summary:* Implement a system to flag records for deletion/anonymization after a set period. +*Tasks:* + +* Add {{retention_period}} and {{deletion_date}} fields to key tables (e.g., {{users}}, {{conversation_messages}}, {{assessments}}) +* Default retention values (e.g., 1 year for conversation logs) +* Script or cron job to handle data deletion or anonymization past {{deletion_date}} + +*Acceptance Criteria:* + +* Each table has a way to track when data should be removed +* Automated job/process can remove or anonymize expired data + +## Metadata + +- **Jira Issue**: TUT-690 +- **Created**: 29/Mar/25 7:38 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Add Age Verification & (Future) Parental Consent +status: ready +labels: + - refactor +--- + +# Add Age Verification & (Future) Parental Consent + +## Description + +h3. *Summary:* + +Implement an age verification system during user sign-up to enforce compliance with age-based requirements. Prevent users under 13 from signing up entirely. For users between 13 and 17, initiate a parental consent workflow. Prepare backend support for future parental consent features. + +---- + +h3. *Tasks:* + +# *User Age Capture:* +#* Add or confirm the presence of an {{age}} or {{date_of_birth}} field in the {{users}} table. +# *Age Gating (Under-13 Block):* +#* Enforce a hard restriction preventing users under 13 years old from completing sign-up. +#* Display an appropriate error message if the user enters a date of birth indicating age < 13. +# *Consent Workflow for Ages 13–17:* +#* If user is under 18 but 13 or older: +#** Mark account as {{"pending_consent"}} or similar status. +#** Block access to full platform features until consent is resolved. +# *Future: Parental Consent Table:* +#* Define a {{parental_consents}} table with: +#** {{user_id}} (foreign key) +#** {{parent_contact_info}} +#** {{consent_date}} +#** {{verification_method}} +#** {{status}} (pending/approved/rejected) + +---- + +h3. *Acceptance Criteria:* + +* Users under 13 *cannot* create an account (sign-up fails with a clear message). +* Users aged 13–17 are flagged as requiring parental consent. +* Age checks are enforced and tested as part of the sign-up flow. +* (Future) System is prepared to store and verify parental consent. + +## Metadata + +- **Jira Issue**: TUT-689 +- **Created**: 29/Mar/25 7:32 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Encrypt Sensitive User Fields +status: ready +labels: + - refactor +--- + +# Encrypt Sensitive User Fields + +## Description + +*Summary:* Implement field-level encryption for student PII (e.g., first_name, last_name, email) in the {{users}} table. +*Tasks:* + +* Add new encrypted columns in DB (e.g., {{encrypted_first_name}}) +* Migrate existing data with an encryption script +* Decrypt in application layer when displaying user info +* Store/rotate encryption keys securely (e.g., AWS KMS) + +*Acceptance Criteria:* + +* All sensitive data is stored in encrypted columns +* Application retrieves and decrypts data with minimal impact on UX +* Keys are not stored in the same database as PII + +## Metadata + +- **Jira Issue**: TUT-688 +- **Created**: 29/Mar/25 7:29 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Data Compliance For Beta +status: ready +labels: + - other +--- + +# Data Compliance For Beta + +## Description + +Set of work tickets for implementing core data anonymization and compliance measures before demo launch. Each ticket highlights the *“must-do”* items for FERPA/COPPA alignment and basic privacy/security readiness. + +[https://chatgpt.com/share/e/67e89ea1-ae30-8007-bb4a-d5525c55bd71|https://chatgpt.com/share/e/67e89ea1-ae30-8007-bb4a-d5525c55bd71|smart-link] + +[https://chatgpt.com/share/e/67e89eae-5214-8007-8eef-f9ff6129532f|https://chatgpt.com/share/e/67e89eae-5214-8007-8eef-f9ff6129532f|smart-link] + +## Metadata + +- **Jira Issue**: TUT-687 +- **Created**: 29/Mar/25 7:26 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Calendar Bugs +status: ready +labels: + - bug +--- + +# Calendar Bugs + +## Description + +When creating a calendar event, it is created for the day prior to the date selected. + +Calendar events for the next month, but in the first few days do not show up as they should. + +![image-20250330-003924.png|width=899,height=767,alt="image-20250330-003924.png"! + +## Metadata + +- **Jira Issue**: TUT-686 +- **Created**: 29/Mar/25 6:41 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: make sure subtopic box fits text and update prompt service to guarantee subtopics don't get too large. +status: ready +labels: + - enhancement +--- + +# make sure subtopic box fits text and update prompt service to guarantee subtopics don't get too large. + +## Description + +![image-20250329-175218.png|width=321,height=499,alt="image-20250329-175218.png"! + +## Metadata + +- **Jira Issue**: TUT-685 +- **Created**: 29/Mar/25 11:52 AM +- **Reporter**: Ted + +---ISSUE--- + +--- +title: remove add new unit and fix dropdown on teacher dashboard +status: ready +labels: + - enhancement +assignees: + - Peter Apazidis +--- + +# remove add new unit and fix dropdown on teacher dashboard + +## Description + +We do not need the “Add new units” button anymore because units can be added in the manage classes page. Additionally, the dropdown for choosing the unit to display on the teacher homepage doesn’t have enough padding and looks awkward. Add padding and remove the border. + +## Metadata + +- **Jira Issue**: TUT-684 +- **Created**: 28/Mar/25 1:22 PM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: Use upload modal from figma for curriculum upload after signup +status: ready +labels: + - enhancement +assignees: + - Peter Apazidis +--- + +# Use upload modal from figma for curriculum upload after signup + +## Description + +Currently when a new teacher signs up the curriculum upload modal doesn’t look like what is present in the figma. Update the modal to look like the figma. Include a progress bar or loading icon when a file is being uploaded. Include the informational text that is currently in the non-figma curriculum upload, but it needs to be more concise. + +## Metadata + +- **Jira Issue**: TUT-683 +- **Created**: 28/Mar/25 10:36 AM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: Voice Mode - Math bug +status: ready +labels: + - bug +assignees: + - Flynn Cruse +--- + +# Voice Mode - Math bug + +## Description + +When using voice mode in the math-tutor, the voice reads “Math expression” then the statement, then “Math expression” we should refine what is passed to eleven labs so that it reads more cleanly. + +Example: + +```When you change a constant in a linear equation, such as +y=mx+b, altering +b shifts the graph up or down. What do you think happens if you increase +b?``` + +is currently being read as: + +```When you change a constant in a linear equation, such as +"Math expression" y=mx+b "Math expression" , altering +"Math expression" b "Math expression" shifts the graph up or down. What do you think happens if you increase +"Math expression" b "Math expression"?``` + +Please report other bugs found during testing and solve! + +Integrals read as “int” +bullets read as “minus” + +## Metadata + +- **Jira Issue**: TUT-681 +- **Created**: 28/Mar/25 10:00 AM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Cleanup & Organize Frontend Codebase +status: ready +labels: + - refactor +assignees: + - Flynn Cruse +--- + +# Cleanup & Organize Frontend Codebase + +## Description + +*Summary:* Restructure the frontend codebase to follow React best practices, improve maintainability, and ensure consistent organization patterns. + +*Required Changes:* + +# Consolidate duplicate directories ({{context}}/{{contexts}}, {{hook}}/{{hooks}}) +# Standardize plural naming for collection directories +# Fix typo in {{RootProvidet.tsx}} → {{RootProvider.tsx}} +# Implement feature-based organization alongside type-based structure +# Add README documentation to key directories + +*Acceptance Criteria:* + +* No duplicate or inconsistently named directories +* All imports updated without breaking functionality +* Documentation added to explain structure + +## Metadata + +- **Jira Issue**: TUT-680 +- **Created**: 28/Mar/25 9:36 AM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: d00ble eyes +status: ready +labels: + - bug +assignees: + - Bennett David +--- + +# d00ble eyes + +## Description + +Password field (perhaps only on some browsers) shows two different icons for unhiding the typed password. Nice that they are next to each other and still both work, but we should shoot for only one icon, even if we have to dynamically adapt to which browser is being used + +## Metadata + +- **Jira Issue**: TUT-679 +- **Created**: 27/Mar/25 6:58 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Check functionality of Achievements +status: ready +labels: + - task +--- + +# Check functionality of Achievements + +## Description + +Ensure that achievements are being rewarded when desired. + +## Metadata + +- **Jira Issue**: TUT-678 +- **Created**: 27/Mar/25 6:05 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Diagnose Camera Permission Issue For Demo's +status: ready +labels: + - bug +assignees: + - Flynn Cruse +--- + +# Diagnose Camera Permission Issue For Demo's + +## Description + +During demonstration presentations we have encountered a bug. The error seems to occur when on Zoom calls. +The OCR feature “simple-camera-capture” states: +“Failed to access camera. Please check permissions.” + +This needs to be investigated and solved so that we can use this feature while on calls with potential investors, clients, &/ accelerators. + +![image-20250327-212348.png|width=1738,height=772,alt="image-20250327-212348.png"! + +## Metadata + +- **Jira Issue**: TUT-677 +- **Created**: 27/Mar/25 3:25 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Item Deletion Confirmation +status: ready +labels: + - enhancement +assignees: + - Flynn Cruse +--- + +# Item Deletion Confirmation + +## Description + +Add a *confirmation popup* where the user has to *type the name* of what they are deleting (files, units, classes, or student names) to confirm deletion + + +Teacher: + +* Files - Manage curriculum +* Units - Manage Curriculum +* Remove Student - Manage Students in Your Class +* Classes - Manage All Classes + +## Metadata + +- **Jira Issue**: TUT-676 +- **Created**: 27/Mar/25 3:14 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Remove the "X" that deletes units from the Teacher Homepage +status: ready +labels: + - refactor +assignees: + - Flynn Cruse +--- + +# Remove the "X" that deletes units from the Teacher Homepage + +## Description + +Teachers can delete units from the manage curriculum view. The “X” is unnecessary. + +## Metadata + +- **Jira Issue**: TUT-675 +- **Created**: 27/Mar/25 3:12 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Fix Manage Curriculum Bug (Teacher) +status: ready +labels: + - bug +assignees: + - Ted +--- + +# Fix Manage Curriculum Bug (Teacher) + +## Description + +* -Remove uploaded files functionality needs fixing - - [https://github.com/RightPathAI/Ed-Tech-Platform-DB-API/pull/75/files|https://github.com/RightPathAI/Ed-Tech-Platform-DB-API/pull/75/files] - + +## Metadata + +- **Jira Issue**: TUT-674 +- **Created**: 27/Mar/25 3:11 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Manage Class Bug Fixes (Teacher) +status: ready +labels: + - bug +assignees: + - Flynn Cruse +--- + +# Manage Class Bug Fixes (Teacher) + +## Description + +* -The *Manage Class* view is capped at just 9 students - remove the cap so that teachers can see ALL the students in their class.- +* -Fix ‘remove students’- + +## Metadata + +- **Jira Issue**: TUT-673 +- **Created**: 27/Mar/25 3:09 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Deleting a file for a unit in the teacher portal fails +status: ready +labels: + - bug +assignees: + - Peter Apazidis +--- + +# Deleting a file for a unit in the teacher portal fails + +## Description + +If a file gets uploaded to a unit in a curriculum and you try to delete the file, the error in the image attached appears. + +![image-20250327-182926.png|width=1884,height=672,alt="image-20250327-182926.png"! + +## Metadata + +- **Jira Issue**: TUT-672 +- **Created**: 27/Mar/25 12:29 PM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: Fix remove students in manage class - teacher view +status: ready +labels: + - task +--- + +# Fix remove students in manage class - teacher view + +## Description + + + +## Metadata + +- **Jira Issue**: TUT-671 +- **Created**: 27/Mar/25 8:55 AM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Merge API-routes-fixes into develop +status: ready +labels: + - task +assignees: + - Peter Apazidis +--- + +# Merge API-routes-fixes into develop + +## Description + +We have encountered problems with the app when deployed because we had not been using route handlers to make requests to the backend on the frontend. The errors were mostly related to network security problems because of this. Since the PR to create a route for each backend call was so big, time was needed to merge the PR with minimal code and functionality loss. + +## Metadata + +- **Jira Issue**: TUT-670 +- **Created**: 27/Mar/25 8:28 AM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: Refactor teacher homepage +status: ready +labels: + - task +assignees: + - Flynn Cruse +--- + +# Refactor teacher homepage + +## Description + +remove class code from dropdown - just class names + +remove class name from center; indicate selected class with dropdown + +move tooltip for events to left side so it doesnt cover curriculum + +## Metadata + +- **Jira Issue**: TUT-669 +- **Created**: 26/Mar/25 9:42 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: graph needs to not use hardcoded values +status: ready +labels: + - bug +assignees: + - Peter Apazidis +--- + +# graph needs to not use hardcoded values + +## Description + +stop using hardcoded values for the activity graphs + +## Metadata + +- **Jira Issue**: TUT-668 +- **Created**: 26/Mar/25 8:11 PM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: Overcome 'Revert' merge issues: transcription & XP +status: ready +labels: + - task +assignees: + - Flynn Cruse +--- + +# Overcome 'Revert' merge issues: transcription & XP + +## Description + +*What happens when you revert a merge commit?* + +* When you *revert a merge commit*, Git creates a new commit that undoes the changes introduced in that merge, but it *also tells Git that the merge has been handled*. This means: * Git remembers the merge happened. +* * So if you try to *merge that same branch (or anything with those same changes)* again later, Git sees it as "already merged" — even though the code was reverted. * As a result, it skips applying those changes during the merge. That’s why you’re seeing “no changes.” +* 🧨 Implication for your case If you: 1. Merged feature branches into {{develop}}. +* 2. Then *reverted* those merges (via GitHub's “Revert” button or manually). +* 3. And now try to *merge those same branches back* (or branches based on them)... Then Git thinks the changes are already applied and undone — and skips them, even though visually they differ. + +* -Merge the refactor which removed deepgram in favor of chromes' speech api:- + +[https://github.com/RightPathAI/Tutechy-Frontend/pull/247|https://github.com/RightPathAI/Tutechy-Frontend/pull/247|smart-link] + + +* -Merge the refactor of xp/levelup functionality +[https://github.com/RightPathAI/Tutechy-Frontend/pull/248|https://github.com/RightPathAI/Tutechy-Frontend/pull/248|smart-link] - + +## Metadata + +- **Jira Issue**: TUT-667 +- **Created**: 26/Mar/25 7:19 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Fix Tower Defense Game AI service API Implementation +status: ready +labels: + - task +assignees: + - Flynn Cruse +--- + +# Fix Tower Defense Game AI service API Implementation + +## Description + +[https://github.com/RightPathAI/RightPathAI-Tower-Defense-3D-RPAI/pull/1|https://github.com/RightPathAI/RightPathAI-Tower-Defense-3D-RPAI/pull/1|smart-link] + +## Metadata + +- **Jira Issue**: TUT-666 +- **Created**: 26/Mar/25 6:19 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Fix SlitherIO API calls to AI service +status: ready +labels: + - task +assignees: + - Flynn Cruse +--- + +# Fix SlitherIO API calls to AI service + +## Description + + + +## Metadata + +- **Jira Issue**: TUT-665 +- **Created**: 26/Mar/25 6:19 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: create server side delete content route in frontend +status: ready +labels: + - enhancement +--- + +# create server side delete content route in frontend + +## Description + + + +## Metadata + +- **Jira Issue**: TUT-664 +- **Created**: 24/Mar/25 4:36 PM +- **Reporter**: Ted + +---ISSUE--- + +--- +title: Teacher calendar doesn't update when class is changed +status: ready +labels: + - bug +assignees: + - Peter Apazidis +--- + +# Teacher calendar doesn't update when class is changed + +## Description + +When on the teacher portal, if you navigate to the calendar, then choose a different class than the one that is currently displaying the events of the selected class do not show up. Not only that but an error displays “Join or create a class first” when you switch a class then reload the page. + +## Metadata + +- **Jira Issue**: TUT-663 +- **Created**: 24/Mar/25 1:03 PM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: dont save blank conversations +status: ready +labels: + - enhancement +--- + +# dont save blank conversations + +## Description + + + +## Metadata + +- **Jira Issue**: TUT-662 +- **Created**: 24/Mar/25 12:52 PM +- **Reporter**: Ted + +---ISSUE--- + +--- +title: Clean up AWS Security Groups +status: ready +labels: + - task +--- + +# Clean up AWS Security Groups + +## Description + +It is best practice to have a few security groups with well defined, specific permissions which we can assign many resources to. +Currently, we have a multitude of security groups - one for each resource that needs them - we should investigate and clean up the security groups so to be more manageable. + +## Metadata + +- **Jira Issue**: TUT-661 +- **Created**: 22/Mar/25 4:40 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Load testing of EC2 Hosted Frontend +status: ready +labels: + - task +--- + +# Load testing of EC2 Hosted Frontend + +## Description + +Test the Frontend of Tutechy with at least 15 concurrent users + +## Metadata + +- **Jira Issue**: TUT-660 +- **Created**: 22/Mar/25 4:29 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Setup School Creation and Onboarding Developer Documentation & Standard Pipeline +status: ready +labels: + - task + - high-priority +assignees: + - Flynn Cruse +--- + +# Setup School Creation and Onboarding Developer Documentation & Standard Pipeline + +## Description + +In the short-term we need to standardize our school onboarding practices with documentation. +In the longer/medium-term we will build out an ‘school-admin-dashboard’ (organization-dashboard) to enable schools to onboard themselves. + +## Metadata + +- **Jira Issue**: TUT-659 +- **Created**: 22/Mar/25 4:02 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Setup Usage Monitoring -OpenTelemetry & SigNoz +status: ready +labels: + - task + - high-priority +assignees: + - Drew +--- + +# Setup Usage Monitoring -OpenTelemetry & SigNoz + +## Description + +We need to be able to determine how many users are logged in, how long they were logged in, various activity metrics. + +We need to be able to monitor for bugs encountered. + +We need to hookup the frontend to a log-saving mechanism + +Research began: + +[https://chatgpt.com/share/e/67df317f-a600-8007-aa6b-ec261b0f7d64|https://chatgpt.com/share/e/67df317f-a600-8007-aa6b-ec261b0f7d64|smart-link] [https://claude.ai/share/9d829c71-4601-4b24-b1b4-499746723865|https://claude.ai/share/9d829c71-4601-4b24-b1b4-499746723865|smart-link] [https://www.perplexity.ai/search/i-need-to-setup-monitoring-of-U1s_wpbpT6ufCr1HHwuz4Q|https://www.perplexity.ai/search/i-need-to-setup-monitoring-of-U1s_wpbpT6ufCr1HHwuz4Q|smart-link] + + + +OpenTelemetry & SigNoz seem preferrable. + +## Metadata + +- **Jira Issue**: TUT-658 +- **Created**: 22/Mar/25 3:46 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Access history from front page? (discuss) +status: ready +labels: + - other +--- + +# Access history from front page? (discuss) + +## Description + +right now the flow to get to the histories is to select a tutor and go to the history tab. + +The original idea is that history is per-tutor not universal (though currently it is universal) + +It may make sense to come up with a way to get to history faster (though it may require some redesigning of the ui flow of the website to make t his coherent everywhere) + +## Metadata + +- **Jira Issue**: TUT-657 +- **Created**: 21/Mar/25 2:47 PM +- **Reporter**: Drew + +---ISSUE--- + +--- +title: Filter sidebar should have text search +status: ready +labels: + - other +--- + +# Filter sidebar should have text search + +## Description + +Using the issue type Idea since this is very much a future issue im writing just so I don’t forget + +Text search for the filter sidebar that they can pair with the dates +Would also be good if it showed some context around the matched text under each convo so they can sort through quickly + +## Metadata + +- **Jira Issue**: TUT-656 +- **Created**: 21/Mar/25 2:38 PM +- **Reporter**: Drew + +---ISSUE--- + +--- +title: add password strength requirements +status: ready +labels: + - enhancement +--- + +# add password strength requirements + +## Description + + + +## Metadata + +- **Jira Issue**: TUT-655 +- **Created**: 21/Mar/25 2:10 PM +- **Reporter**: Ted + +---ISSUE--- + +--- +title: Select and Onboard new Cloud Engineer / Cloud Engineering Team +status: ready +labels: + - task +assignees: + - Flynn Cruse +--- + +# Select and Onboard new Cloud Engineer / Cloud Engineering Team + +## Description + +* Meet with CloudTech - decide if moving forward with them or an Upwork Candidate. + + +Onboard selected party. + +Facilitate the troubleshooting and deployment of our services via EC2s, and via ECS. + +## Metadata + +- **Jira Issue**: TUT-654 +- **Created**: 21/Mar/25 1:37 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Review and merge outstanding RDS Layer branches +status: ready +labels: + - task +assignees: + - Flynn Cruse +--- + +# Review and merge outstanding RDS Layer branches + +## Description + +[https://github.com/RightPathAI/Ed-Tech-Platform-DB-API/pulls|https://github.com/RightPathAI/Ed-Tech-Platform-DB-API/pulls] +review PR’s, improve code quality as needed and merge! + +## Metadata + +- **Jira Issue**: TUT-653 +- **Created**: 21/Mar/25 1:35 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Identify & Merge deployment code to develop - TutechyFrontend +status: ready +labels: + - task +--- + +# Identify & Merge deployment code to develop - TutechyFrontend + +## Description + +Resolve git network [https://github.com/RightPathAI/Tutechy-Frontend/network|https://github.com/RightPathAI/Tutechy-Frontend/network] so develop is up to date again: +Identify and merge deployment grade code from demo branches and api route fix branches into develop branch to prepare for deployment. + +Aggregate progress from disparate branches into ‘develop' (default branch) + +API-Route-Fixes-2 +demo-launch-3-19-2025 +demo-3-13-2025 +demo-3-12-2025 +demo-030112025 + +## Metadata + +- **Jira Issue**: TUT-652 +- **Created**: 21/Mar/25 1:31 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: haptics +status: ready +labels: + - enhancement +--- + +# haptics + +## Description + +need a big justice boom for each correct answer, etc. + +Platform should provide audio feedback for major/common operations. + +## Metadata + +- **Jira Issue**: TUT-651 +- **Created**: 20/Mar/25 7:23 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Simplify Class Codes +status: ready +labels: + - refactor +--- + +# Simplify Class Codes + +## Description + +Should be easily passable human-to-human by speech. 6 digit codes, school and class abbreviations, etc. + +## Metadata + +- **Jira Issue**: TUT-650 +- **Created**: 20/Mar/25 7:21 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Properly reject signup if any information is invalid +status: ready +labels: + - bug +assignees: + - Flynn Cruse +--- + +# Properly reject signup if any information is invalid + +## Description + +Student is able to enter a dummy class code for signup - error thrown but user still created. This is wrong and should throw an error without creating a user. +Student/Teacher is able to enter a dummy school name for signup - error thrown but user still created. This is wrong and should throw an error without creating a user. + +## Metadata + +- **Jira Issue**: TUT-649 +- **Created**: 20/Mar/25 6:52 PM +- **Reporter**: Ted + +---ISSUE--- + +--- +title: fully implement all prompt service api calls in db layer +status: ready +labels: + - enhancement +assignees: + - Ted +--- + +# fully implement all prompt service api calls in db layer + +## Description + +make sure all calls have proper args + +## Metadata + +- **Jira Issue**: TUT-646 +- **Created**: 20/Mar/25 5:51 PM +- **Reporter**: Ted + +---ISSUE--- + +--- +title: Oversee ECS deployment +status: ready +labels: + - enhancement +assignees: + - Ted +--- + +# Oversee ECS deployment + +## Description + + + +## Metadata + +- **Jira Issue**: TUT-645 +- **Created**: 20/Mar/25 5:51 PM +- **Reporter**: Ted + +---ISSUE--- + +--- +title: Investigate Prompt Service Error in EC2 instance +status: ready +labels: + - enhancement +assignees: + - Ted +--- + +# Investigate Prompt Service Error in EC2 instance + +## Description + +when tool calls error out it crashes the stream + +## Metadata + +- **Jira Issue**: TUT-644 +- **Created**: 20/Mar/25 5:50 PM +- **Reporter**: Ted + +---ISSUE--- + +--- +title: fix TutorCards being clicked at the same time +status: ready +labels: + - bug +assignees: + - Peter Apazidis +--- + +# fix TutorCards being clicked at the same time + +## Description + +Apparently what TutorCard gets selected is dependent on the subject of the tutor in the TutorCard. That means if there are multiple tutors that belong to the same subject, clicking either of the tutors will cause all with the same subject to be selected. Obviously only the one clicked should be selected. +IDIOT -'TED' + +## Metadata + +- **Jira Issue**: TUT-643 +- **Created**: 18/Mar/25 2:11 PM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: RC1 Demo Push +status: ready +labels: + - other +assignees: + - Ted +--- + +# RC1 Demo Push + +## Description + +Address as many crucial items as possible to provide polished user experience, in 2wk lead-up to rc1 demo. + +## Metadata + +- **Jira Issue**: TUT-642 +- **Created**: 14/Mar/25 7:58 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Schedule Meeting for Setting Page (Calendar) +status: ready +labels: + - task +--- + +# Schedule Meeting for Setting Page (Calendar) + +## Description + +Some notes in the PPT lack specific references or details. + + +*Acceptance Criteria:* + +* Meeting is held to clarify outstanding items. +* New tickets are created if needed. + +## Metadata + +- **Jira Issue**: TUT-641 +- **Created**: 14/Mar/25 7:14 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Decide on Centering for Titles vs. Sub-Topics (Calendar) +status: ready +labels: + - refactor +--- + +# Decide on Centering for Titles vs. Sub-Topics (Calendar) + +## Description + +Possibly center main title and left-align sub-topics. + +*Acceptance Criteria:* + +* Consistent, clear alignment based on final design choice. + +## Metadata + +- **Jira Issue**: TUT-640 +- **Created**: 14/Mar/25 7:13 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Black Event Titles (Calendar) +status: ready +labels: + - refactor + - high-priority +assignees: + - Flynn Cruse +--- + +# Black Event Titles (Calendar) + +## Description + +Event titles should be black. + +## Metadata + +- **Jira Issue**: TUT-639 +- **Created**: 14/Mar/25 7:12 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Add Unit Information Dropdown to Events (Calendar) +status: ready +labels: + - refactor +--- + +# Add Unit Information Dropdown to Events (Calendar) + +## Description + +Some notes about unit display improvements lack specific references or details.  + +*Acceptance Criteria:* + +Meeting is held to clarify dropdown implementation + +!https://lh7-rt.googleusercontent.com/docsz/AD_4nXc3SU9yhNm2bbjjvfYxUSfiP0NiBbBCHncOK5eXBqKAG_7Stdi5HBmwv-60wq8_atMTZ4O2du--Y5z8-OsRX07XvAgn_VIoaov5e2HZOs9w4ry81Q-mHFras59TxYYx3tBi7dO1bQ?key=Hy2SYlay-g7ac5cEgr7ykBAx|width=50%! + +## Metadata + +- **Jira Issue**: TUT-638 +- **Created**: 14/Mar/25 7:11 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Remove Topics from Event Display (Calendar) +status: ready +labels: + - refactor + - high-priority +assignees: + - Ted +--- + +# Remove Topics from Event Display (Calendar) + +## Description + +A note mentions "Remove Topics" with no specific page reference. Part of improving unit visibility in calendar.  + +*Acceptance Criteria:* + +* Affected page(s) are identified, and topics are removed per design guidelines. +* No other functionality is affected by this change. + +## Metadata + +- **Jira Issue**: TUT-637 +- **Created**: 14/Mar/25 7:09 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Add Borders Between Days (Calendar) +status: ready +labels: + - refactor + - high-priority +assignees: + - Flynn Cruse +--- + +# Add Borders Between Days (Calendar) + +## Description + +Should improve visual clarity. Each day cell needs to be clearly delineated/distinct. + +## Metadata + +- **Jira Issue**: TUT-636 +- **Created**: 14/Mar/25 7:08 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Rename “Your/My” to “Tutors/Badges” and Left-Align (Achievement) +status: ready +labels: + - refactor + - high-priority +assignees: + - Ted +--- + +# Rename “Your/My” to “Tutors/Badges” and Left-Align (Achievement) + +## Description + +Remove possessive language and align left. + + +*Acceptance Criteria:* + +* “Your Tutors” → “Tutors,” “My Badges” → “Badges.” +* Alignment matches Figma design. + +## Metadata + +- **Jira Issue**: TUT-635 +- **Created**: 14/Mar/25 7:07 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Align Stats with Bottom of “Your Badges” Section (Achievement) +status: ready +labels: + - refactor + - high-priority +--- + +# Align Stats with Bottom of “Your Badges” Section (Achievement) + +## Description + +The new design aligns stats visually in one horizontal line. For 100pct / complete stats line up properly with the badge container. + +## Metadata + +- **Jira Issue**: TUT-634 +- **Created**: 14/Mar/25 7:06 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Use Updated Design for Tutor Badges (Achievement) +status: ready +labels: + - refactor + - high-priority +--- + +# Use Updated Design for Tutor Badges (Achievement) + +## Description + +Demo branches have bigger, colored badges. + + +*Acceptance Criteria:* + +* Badges are colorful and larger, matching demo branches/Figma. + +## Metadata + +- **Jira Issue**: TUT-633 +- **Created**: 14/Mar/25 7:05 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Change “Upgrade” to “Purchase” (Locker/your item_update) +status: ready +labels: + - refactor + - high-priority +assignees: + - Ted +--- + +# Change “Upgrade” to “Purchase” (Locker/your item_update) + +## Description + +Reflects the proper user flow. + + + *Acceptance Criteria:* + +* Any “Upgrade” references replaced with “Purchase,” matching logic in the store. + +## Metadata + +- **Jira Issue**: TUT-632 +- **Created**: 14/Mar/25 7:04 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Increase Prominence of Item Names (Locker/your item_update) +status: ready +labels: + - refactor +--- + +# Increase Prominence of Item Names (Locker/your item_update) + +## Description + +Make item names larger or more responsive to highlight them. + + + *Acceptance Criteria:* + +* Item names stand out and are readable at a glance. + +## Metadata + +- **Jira Issue**: TUT-631 +- **Created**: 14/Mar/25 7:03 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Change Avatar Previews Circular (Locker/your item_update) +status: ready +labels: + - refactor +--- + +# Change Avatar Previews Circular (Locker/your item_update) + +## Description + +Figma uses circular previews; React currently uses squares. + +## Metadata + +- **Jira Issue**: TUT-630 +- **Created**: 14/Mar/25 7:02 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Adjust Text Colors for Links (Tutor screen/Chat History/filter) +status: ready +labels: + - refactor + - high-priority +assignees: + - Ted +--- + +# Adjust Text Colors for Links (Tutor screen/Chat History/filter) + +## Description + +View summary,” “Go to conversation,” “Level,” etc. should be purple/blue. For acceptance link text colors match Figma’s purple/blue palette. + +## Metadata + +- **Jira Issue**: TUT-629 +- **Created**: 14/Mar/25 7:01 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Lighten the Background (Tutor screen/leave assessment) +status: ready +labels: + - refactor +assignees: + - Ted +--- + +# Lighten the Background (Tutor screen/leave assessment) + +## Description + +React’s version is darker than Figma’s. For ticket completion the pane or background hue is adjusted to match Figma. + +## Metadata + +- **Jira Issue**: TUT-628 +- **Created**: 14/Mar/25 7:00 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Increase Fireworks Size (Tutor screen/leave assessment) +status: ready +labels: + - refactor +--- + +# Increase Fireworks Size (Tutor screen/leave assessment) + +## Description + +Make fireworks appear larger in proportion to the pane. + + +*Acceptance Criteria:* + +* Fireworks size in the final modal matches the scale shown in Figma. + +## Metadata + +- **Jira Issue**: TUT-627 +- **Created**: 14/Mar/25 6:59 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Highlight XP with a Yellow Outline and No Fill (Tutor screen/leave assessment) +status: ready +labels: + - refactor +--- + +# Highlight XP with a Yellow Outline and No Fill (Tutor screen/leave assessment) + +## Description + +Matches the “fun” Figma look for highlighting XP. + + +*Acceptance Criteria:* + +* XP label or icon has a bright yellow outline per design. + + + +![image-20250315-014144.png|width=100%,alt="image-20250315-014144.png"! + +## Metadata + +- **Jira Issue**: TUT-626 +- **Created**: 14/Mar/25 6:58 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Leave Assessment (Tutor screen/assessment 1) +status: ready +labels: + - enhancement + - high-priority +assignees: + - Ted +--- + +# Leave Assessment (Tutor screen/assessment 1) + +## Description + +Popup which allows use to confirm they want to leave assessment + +## Metadata + +- **Jira Issue**: TUT-625 +- **Created**: 14/Mar/25 6:57 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Implement Save Progress - Phase 2 (Tutor screen/assessment 1) +status: ready +labels: + - enhancement +--- + +# Implement Save Progress - Phase 2 (Tutor screen/assessment 1) + +## Description + +Allow partial quiz/assessment progress to be saved. + + +*Acceptance Criteria:* + +* User can exit mid-assessment and resume later without losing progress. + +## Metadata + +- **Jira Issue**: TUT-624 +- **Created**: 14/Mar/25 6:56 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Implement Camera Functionality Specifically for Short Response Qs (Tutor screen/assessment 1) +status: ready +labels: + - enhancement +--- + +# Implement Camera Functionality Specifically for Short Response Qs (Tutor screen/assessment 1) + +## Description + +If camera not working, should go back to not showing. +Text/voice, level, and camera icons aren’t relevant for learning assessments. + + +*Acceptance Criteria:* + +* These icons are absent in the header for assessments, only present when relevant. + +## Metadata + +- **Jira Issue**: TUT-623 +- **Created**: 14/Mar/25 6:55 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: “Finish” to “Next”, save last Q (Tutor screen/assessment 1) +status: ready +labels: + - enhancement + - high-priority +assignees: + - Ted +--- + +# “Finish” to “Next”, save last Q (Tutor screen/assessment 1) + +## Description + +Only the final question should say “Finish” - the others should say “Next”. + +## Metadata + +- **Jira Issue**: TUT-622 +- **Created**: 14/Mar/25 6:50 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Topic Add UI Enhancement (Tutor screen/Assessment/setup_edited) +status: ready +labels: + - enhancement +--- + +# Topic Add UI Enhancement (Tutor screen/Assessment/setup_edited) + +## Description + +Implement a user-friendly interface for adding multiple topics using a pill-based design. + +*Acceptance Criteria:* + +* Topics are displayed as pills with a darker background for better visibility +* Include a topic adder component positioned at the top of the topic section +* Pills should have clear visual distinction from unselected items +* Each pill should include a removal option (such as an "×" button) +* Interface should maintain a clean, intuitive design that scales well with multiple selections + +## Metadata + +- **Jira Issue**: TUT-621 +- **Created**: 14/Mar/25 6:49 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Allow Multiple Topics - Still Single Unit (Tutor screen/Assessment/setup_edited) +status: ready +labels: + - refactor + - high-priority +assignees: + - Ted +--- + +# Allow Multiple Topics - Still Single Unit (Tutor screen/Assessment/setup_edited) + +## Description + +Expand the topic selection to support multiple topics per unit, possibly using a pill UI. + + +*Acceptance Criteria:* + +* Users can select multiple topics under one unit. +* Design remains clear and user-friendly. + +## Metadata + +- **Jira Issue**: TUT-620 +- **Created**: 14/Mar/25 6:48 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Pass user hobby and selected topics to stream_tutor endpoint (Tutor screen(chat-interface)/regular convo) +status: ready +labels: + - enhancement + - high-priority +assignees: + - Ted +--- + +# Pass user hobby and selected topics to stream_tutor endpoint (Tutor screen(chat-interface)/regular convo) + +## Description + +Description by request / reach out to Ted for details + +## Metadata + +- **Jira Issue**: TUT-619 +- **Created**: 14/Mar/25 6:47 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Confirm Send Button Color/Shape (Tutor screen(chat-interface)/regular convo) +status: ready +labels: + - refactor +--- + +# Confirm Send Button Color/Shape (Tutor screen(chat-interface)/regular convo) + +## Description + +Figma calls for a pill shape; React might still currently be circular. + +## Metadata + +- **Jira Issue**: TUT-618 +- **Created**: 14/Mar/25 6:45 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Chat Interface Typefacing & Scaling (Tutor screen(chat-interface)/regular convo) +status: ready +labels: + - refactor +--- + +# Chat Interface Typefacing & Scaling (Tutor screen(chat-interface)/regular convo) + +## Description + +Investigate and confirm chat interface font and text size for user/ai output - Research best practices for font size and style and investigate when resizing screen. Font size or weight should be increased, ensuring readability without breaking layout. + +## Metadata + +- **Jira Issue**: TUT-617 +- **Created**: 14/Mar/25 6:45 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Remove Unit Wheel Fill Levels (Tutor screen/select topic) +status: ready +labels: + - refactor + - high-priority +assignees: + - Ted +--- + +# Remove Unit Wheel Fill Levels (Tutor screen/select topic) + +## Description + +Unit wheels should be uniform but ideally entirely removed + +## Metadata + +- **Jira Issue**: TUT-616 +- **Created**: 14/Mar/25 6:40 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Remove or Restyle Blue Scrollbar for Unit Select (Tutor screen/select topic) +status: ready +labels: + - refactor +--- + +# Remove or Restyle Blue Scrollbar for Unit Select (Tutor screen/select topic) + +## Description + +The scrollbar is distracting/doesn’t match the design - should either be hidden or use a more subtle style. + +## Metadata + +- **Jira Issue**: TUT-615 +- **Created**: 14/Mar/25 6:39 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Confirm Popup Pane Darkness (Tutor screen/select topic) +status: ready +labels: + - task +assignees: + - Ted +--- + +# Confirm Popup Pane Darkness (Tutor screen/select topic) + +## Description + +When the popup is open, the rest of the screen dims in Figma. For completion, background behind the popup should be appropriately dim, matching Figma’s overlay effect. + +## Metadata + +- **Jira Issue**: TUT-614 +- **Created**: 14/Mar/25 6:38 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Class Names in Achievements Page (Homepage) +status: ready +labels: + - refactor + - high-priority +--- + +# Class Names in Achievements Page (Homepage) + +## Description + +The subject name should be displayed for the tutor cards in the achievements page instead of the class names. Ensure consistent color palette that meets design intent and accessibility guidelines. + +## Metadata + +- **Jira Issue**: TUT-613 +- **Created**: 14/Mar/25 6:37 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Center and Bold the Graph Title (Homepage) +status: ready +labels: + - refactor + - high-priority +assignees: + - Ted +--- + +# Center and Bold the Graph Title (Homepage) + +## Description + +The title should stand out - graph title is centered and bold, as per Figma. + +## Metadata + +- **Jira Issue**: TUT-612 +- **Created**: 14/Mar/25 6:33 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Change Clock Icon Box text (Homepage) +status: ready +labels: + - enhancement + - high-priority +assignees: + - Ted +--- + +# Change Clock Icon Box text (Homepage) + +## Description + +The label “Hours Spent” should have a clear icon or container - ensure “Hours Spent” instead of “... on tutechy” used asa well. For acceptance an icon/box is visible, matching or approximating Figma’s style. + +## Metadata + +- **Jira Issue**: TUT-611 +- **Created**: 14/Mar/25 6:32 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Revise Background (Homepage) +status: ready +labels: + - task +assignees: + - Ted +--- + +# Revise Background (Homepage) + +## Description + +Ensure the background (especially in text entry fields) matches Figma’s slightly dimmer style, including across different sections. + +## Metadata + +- **Jira Issue**: TUT-610 +- **Created**: 14/Mar/25 6:30 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Remove or Investigate “X” in Input Field (Sign up/student/hobby) +status: ready +labels: + - task + - high-priority +assignees: + - Ted +--- + +# Remove or Investigate “X” in Input Field (Sign up/student/hobby) + +## Description + +In the figma - if the “X” is not needed, remove it. If it’s helpful, restyle it. Input field ideally appears clean and consistent with the rest of the form elements. + +## Metadata + +- **Jira Issue**: TUT-609 +- **Created**: 14/Mar/25 6:25 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Change “Let’s Start” Button Color (Sign up/student/hobby) +status: ready +labels: + - refactor + - high-priority +assignees: + - Ted +--- + +# Change “Let’s Start” Button Color (Sign up/student/hobby) + +## Description + +Switch from blue to purple (or confirm final color). Should also be rounded. + + + *Acceptance Criteria:* + +* Button color is purple (or final approved color). +* Button corners have the appropriate border-radius. + +## Metadata + +- **Jira Issue**: TUT-608 +- **Created**: 14/Mar/25 6:23 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Add to “Choose Avatar” Text (Sign up/student/ava) +status: ready +labels: + - enhancement +--- + +# Add to “Choose Avatar” Text (Sign up/student/ava) + +## Description + +Clearly label the avatar selection step titled “Choose Avatar.” For acceptance text is visible near or above the avatar choices. + +## Metadata + +- **Jira Issue**: TUT-607 +- **Created**: 14/Mar/25 6:23 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Change Continue Button Color to Figma Blue (Sign up/student/ava) +status: ready +labels: + - refactor + - high-priority +assignees: + - Ted +--- + +# Change Continue Button Color to Figma Blue (Sign up/student/ava) + +## Description + +Ensure the “Continue” button color matches the design. For completion, button color matches the same hex/rgb as in Figma. + + + +F I G M A B L U E + +## Metadata + +- **Jira Issue**: TUT-606 +- **Created**: 14/Mar/25 6:21 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Add “School Password” Field (Sign up/student/form_filled) +status: ready +labels: + - enhancement +--- + +# Add “School Password” Field (Sign up/student/form_filled) + +## Description + +Same new field as teacher sign-up - field labeled “School Password” is visible and required as needed. + +## Metadata + +- **Jira Issue**: TUT-605 +- **Created**: 14/Mar/25 6:19 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Change Signups to reference school_name instead of school_id +status: ready +labels: + - refactor + - high-priority +assignees: + - Flynn Cruse +--- + +# Change Signups to reference school_name instead of school_id + +## Description + +e.g., “Christ School” instead of “1” +Update: + +* -Database - school_id is stored/presented as a string.- - Keep school_id as the primary key in database, just change the signup forms to reference the school names instead! +* -student signup - +* -teacher sign-up +- + +## Metadata + +- **Jira Issue**: TUT-604 +- **Created**: 14/Mar/25 6:19 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Add Event Types - HW, Tests, LAs, Games... (Teacher portal/create test/empty) +status: ready +labels: + - enhancement +--- + +# Add Event Types - HW, Tests, LAs, Games... (Teacher portal/create test/empty) + +## Description + +Expand the create-test flow to allow specifying different event types. + + +*Acceptance Criteria:* + +* UI includes a dropdown or selection for event types. +* Events are properly categorized on creation. + +## Metadata + +- **Jira Issue**: TUT-603 +- **Created**: 14/Mar/25 6:17 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Check Boldness for “Add New Class” and “Your Classes” (Manage classes) +status: ready +labels: + - task +--- + +# Check Boldness for “Add New Class” and “Your Classes” (Manage classes) + +## Description + +Evaluate if these headings need heavier or lighter font weights. Final boldness must be consistent with the design’s headings style. + +## Metadata + +- **Jira Issue**: TUT-602 +- **Created**: 14/Mar/25 6:15 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Class Deletion Warning with Typed Confirmation (Manage classes) +status: ready +labels: + - enhancement +--- + +# Class Deletion Warning with Typed Confirmation (Manage classes) + +## Description + +On class deletion, user must type the class name to confirm. + + +*Acceptance Criteria:* + +* Deletion only proceeds if user correctly types the class name. +* Confirmation text should be clear and user-friendly. + +## Metadata + +- **Jira Issue**: TUT-601 +- **Created**: 14/Mar/25 6:14 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Dimmer Background for Text Entry Fields (Manage classes) +status: ready +labels: + - refactor +--- + +# Dimmer Background for Text Entry Fields (Manage classes) + +## Description + +The background inside text fields should be slightly darker, per Figma. For ticket completion text entry fields have a noticeably dimmer background without sacrificing readability. + +## Metadata + +- **Jira Issue**: TUT-600 +- **Created**: 14/Mar/25 6:13 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Move “Logout” to a Settings Menu (Teacher portal, general) +status: ready +labels: + - enhancement + - high-priority +assignees: + - Ted +--- + +# Move “Logout” to a Settings Menu (Teacher portal, general) + +## Description + +Relocate the logout option from its current spot to a more intuitive Settings or Profile menu. + + +*Acceptance Criteria:* + +* Logout is accessible under Settings. +* UX testing confirms users can locate it easily. + +## Metadata + +- **Jira Issue**: TUT-599 +- **Created**: 14/Mar/25 6:12 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: "How Is This Student Performing?” +fix (Teacher portal, general) +status: ready +labels: + - enhancement +--- + +# "How Is This Student Performing?” +fix (Teacher portal, general) + +## Description + +This feature is partially broken or incomplete. The finished feature/ticket displays correct performance data/analytics, and provides no console errors or broken UI flows. + +## Metadata + +- **Jira Issue**: TUT-598 +- **Created**: 14/Mar/25 6:11 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Confirmation Prompt for Removing Student (Teacher portal, general) +status: ready +labels: + - enhancement + - high-priority +--- + +# Confirmation Prompt for Removing Student (Teacher portal, general) + +## Description + +Confirm in a pane “Are you sure you want to remove this student?” just before final removal. Clicking button “Remove” must trigger a confirmation modal, and user must confirm or cancel. + +## Metadata + +- **Jira Issue**: TUT-597 +- **Created**: 14/Mar/25 6:09 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Add Hover Tooltips for Emojis (Teacher portal, general) +status: ready +labels: + - enhancement +--- + +# Add Hover Tooltips for Emojis (Teacher portal, general) + +## Description + +Tooltips explain what each face means - hovering or tapping on each emoji triggers a tooltip with explanation. + +## Metadata + +- **Jira Issue**: TUT-596 +- **Created**: 14/Mar/25 6:07 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Show Colored Emojis by Each Student Name (Teacher portal, general) +status: ready +labels: + - enhancement +--- + +# Show Colored Emojis by Each Student Name (Teacher portal, general) + +## Description + +Emojis indicate performance or sentiment (red frowny, yellow neutral, etc.). For acceptance, emoji color matches the sentiment or performance level. + +## Metadata + +- **Jira Issue**: TUT-595 +- **Created**: 14/Mar/25 6:07 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Average Engagement Time & Weekly Learning Assessments (Teacher portal, general) +status: ready +labels: + - enhancement +--- + +# Average Engagement Time & Weekly Learning Assessments (Teacher portal, general) + +## Description + +Rethink the stats layout to include these new metrics. Stats section should include average engagement time and weekly learning assessments. + +## Metadata + +- **Jira Issue**: TUT-594 +- **Created**: 14/Mar/25 6:05 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: “Manage Your Class” (Teacher portal/full) +status: ready +labels: + - refactor +--- + +# “Manage Your Class” (Teacher portal/full) + +## Description + +For the Figma - per design feedback, “Manage Your Class” is clearer - update all “View your class” text to “Manage your class.” + +## Metadata + +- **Jira Issue**: TUT-593 +- **Created**: 14/Mar/25 6:04 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Change Terminology from “Files” to “Units” in Events (Teacher portal/full) +status: ready +labels: + - refactor + - high-priority +--- + +# Change Terminology from “Files” to “Units” in Events (Teacher portal/full) + +## Description + +The design uses “Units,” so rename all such references to “Files.” + +## Metadata + +- **Jira Issue**: TUT-592 +- **Created**: 14/Mar/25 6:03 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Rework “Teacher Notes” Section (Sign up/teacher/curriculum_full) +status: ready +labels: + - refactor + - high-priority +--- + +# Rework “Teacher Notes” Section (Sign up/teacher/curriculum_full) + +## Description + +The design suggests a different layout or approach. For acceptance, teacher notes should follow new layout (e.g., bigger text area, different location, etc.). + +## Metadata + +- **Jira Issue**: TUT-591 +- **Created**: 14/Mar/25 6:01 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Remove or Reconsider Percentage Display (Sign up/teacher/curriculum_full) +status: ready +labels: + - refactor + - high-priority +assignees: + - Bennett David +--- + +# Remove or Reconsider Percentage Display (Sign up/teacher/curriculum_full) + +## Description + +The percentage shown may not be relevant in the new design flow. + + +*Acceptance Criteria:* + +* If the percentage is no longer needed, remove it cleanly. +* If kept, confirm with design how it should appear. + +## Metadata + +- **Jira Issue**: TUT-590 +- **Created**: 14/Mar/25 6:00 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Change Background Color Gradient (Sign up/teacher/curriculum_full) +status: ready +labels: + - refactor +assignees: + - Ted +--- + +# Change Background Color Gradient (Sign up/teacher/curriculum_full) + +## Description + +The background gradient in React is incorrect compared to Figma. For acceptance, gradient matches the exact Figma design. + +## Metadata + +- **Jira Issue**: TUT-589 +- **Created**: 14/Mar/25 5:59 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Add Missing Inner Container (Sign up/teacher/curriculum_full) +status: ready +labels: + - enhancement +--- + +# Add Missing Inner Container (Sign up/teacher/curriculum_full) + +## Description + +There should be a container around the “Units” header and the “Operations with Whole Numbers” block, matching Figma’s layout. For acceptance, need container visually grouping “Units” and “Operations with Whole Numbers” in the UI. + +## Metadata + +- **Jira Issue**: TUT-588 +- **Created**: 14/Mar/25 5:57 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Display File Size in the File Box (Sign up/teacher/curriculum_full) +status: ready +labels: + - refactor + - high-priority +assignees: + - Bennett David +--- + +# Display File Size in the File Box (Sign up/teacher/curriculum_full) + +## Description + +The file box is gray and doesn’t show the size in MB. For acceptance, the box must clearly shows file name and size (e.g., 2.5 MB). + +## Metadata + +- **Jira Issue**: TUT-587 +- **Created**: 14/Mar/25 5:56 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Replace Loading Icon with Bar Loader (Sign up/teacher/curriculum_uploading) +status: ready +labels: + - refactor +--- + +# Replace Loading Icon with Bar Loader (Sign up/teacher/curriculum_uploading) + +## Description + +Current pulsing icon should be replaced by a progress bar-style loader (per Figma). + + + *Acceptance Criteria:* + +* Loader is visually consistent with the bar shape in Figma. +* Loader properly indicates upload progress or loading state. + +## Metadata + +- **Jira Issue**: TUT-586 +- **Created**: 14/Mar/25 5:55 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Add Conditional Text for “Upload Your Curriculum (Sign up/teacher/curriculum_empty) +status: ready +labels: + - enhancement + - high-priority +assignees: + - Bennett David +--- + +# Add Conditional Text for “Upload Your Curriculum (Sign up/teacher/curriculum_empty) + +## Description + +Show different text depending on context: + +* If teacher has just signed in for the first time, show “Upload your curriculum.” +* If a teacher who skipped the initial upload is now adding a class (no curriculum found), show an alternate text. + +For acceptance, correct text appears based on whether it’s a brand-new sign-in vs. adding a class post-signup. + +## Metadata + +- **Jira Issue**: TUT-585 +- **Created**: 14/Mar/25 5:54 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Correct Background Color (Sign up/teacher/curriculum_empty) +status: ready +labels: + - refactor +assignees: + - Ted +--- + +# Correct Background Color (Sign up/teacher/curriculum_empty) + +## Description + +The background color is incorrect compared to the Figma design. For acceptance, new background color matches Figma specs exactly. + +## Metadata + +- **Jira Issue**: TUT-584 +- **Created**: 14/Mar/25 5:52 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Remove or Reconsider “X” Icons (Sign up/teacher/form_filled) +status: ready +labels: + - refactor +--- + +# Remove or Reconsider “X” Icons (Sign up/teacher/form_filled) + +## Description + +The “X” icons may not be necessary. Confirm with design whether to remove or replace them. + +* “X” icons are either removed or replaced with a more appropriate icon. +* UI remains clear and uncluttered. + +At time of ticket creation, work already complete/in review. + +## Metadata + +- **Jira Issue**: TUT-583 +- **Created**: 14/Mar/25 5:51 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Teacher Invitation Code System Implementation +status: ready +labels: + - enhancement + - high-priority +--- + +# Teacher Invitation Code System Implementation + +## Description + +Implement an invite code system for teacher onboarding to ensure only authorized teachers can create accounts on our platform. +(This replaces the previously proposed "School Password" approach with a more secure and manageable invitation-based solution.) + +*Requirements:* + +* Create a new database table called {{teacher_invite_codes}} with the following fields: +** {{id}} (primary key) +** {{invite_code}} (unique code for each invitation) +** {{school_id}} (reference to associated school) +** {{is_expired}} (boolean flag to track usage status) +** {{created_by_user_id}} (tracks who generated the code) +** {{created_at}} (timestamp) +** {{expires_at}} (optional expiration date) + +* Modify the teacher sign-up flow to: +** Include a field for "Invitation Code" +** Validate invitation codes during account creation +** Automatically expire codes *after* successful account creation +* Create an API endpoint to: +** Generate new invite codes for specific schools +** Manage existing invite codes (view, expire, delete) + +*Success Criteria:* + +* Only teachers with valid invitation codes can create accounts +* Once used, invitation codes are automatically expired and cannot be reused +* Administrators can generate and manage invitation codes for their schools + +*Technical Notes:* + +* This approach provides better security and accountability than shared school passwords +* Each code is single-use and directly tied to a specific teacher onboarding +* System maintains an audit trail of who created which codes and when they were used + +## Metadata + +- **Jira Issue**: TUT-582 +- **Created**: 14/Mar/25 5:50 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Update Button Color (Sign up/teacher/form_filled) +status: ready +labels: + - refactor +assignees: + - Ted +--- + +# Update Button Color (Sign up/teacher/form_filled) + +## Description + +The current shade of blue does not match the Figma design. + +* New button color reflects the Figma-approved blue. +* Button color is consistent across different screen resolutions. + +## Metadata + +- **Jira Issue**: TUT-580 +- **Created**: 14/Mar/25 5:48 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Deploy Tutechy Frontend via EC2 - ensure full functionality +status: ready +labels: + - task +assignees: + - Ted +--- + +# Deploy Tutechy Frontend via EC2 - ensure full functionality + +## Description + +Currently when a user attempts to sign-in to the deployed frontend they get an error +”Unable to get user session following successful sign-in.” + +![image-20250313-235743.png|width=2594,height=1212,alt="image-20250313-235743.png"! + +As opposed to signing in on the local version which functions correctly (see the differences in the network tab). +The requests to: [http://localhost:3000/api/auth/login|http://localhost:3000/api/auth/login] which occur on the local version are not occurring at all on the deployed version (the url should be directing to the RDS EC2 (Ie. NEXT_PUBLIC_RDS_API_URL=[http://10.215.30.234:3000|http://10.215.30.234:3000]/api/auth/login) + +![image-20250314-000055.png|width=2664,height=1461,alt="image-20250314-000055.png"! + +## Metadata + +- **Jira Issue**: TUT-579 +- **Created**: 13/Mar/25 6:03 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: FUNDING +status: ready +labels: + - task +assignees: + - Max Brie +--- + +# FUNDING + +## Description + +Continue funding efforts. + +## Metadata + +- **Jira Issue**: TUT-578 +- **Created**: 13/Mar/25 5:57 PM +- **Reporter**: Max Brie + +---ISSUE--- + +--- +title: make tutor cards bigger +status: ready +labels: + - refactor +assignees: + - Peter Apazidis +--- + +# make tutor cards bigger + +## Description + +Tutor cards aren’t as large as they are on the wireframes, make them larger to look more like the wireframes + +## Metadata + +- **Jira Issue**: TUT-577 +- **Created**: 12/Mar/25 10:06 AM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: use class name only for tutor cards on student home page +status: ready +labels: + - refactor +assignees: + - Peter Apazidis +--- + +# use class name only for tutor cards on student home page + +## Description + +Currently the actual class name is being displayed right under the subject name, but because the class name can be very long it causes the tutor cards to have different heights and to not look good. + +## Metadata + +- **Jira Issue**: TUT-576 +- **Created**: 11/Mar/25 9:46 AM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: Refactor/implement Level Up System in frontend +status: ready +labels: + - task +assignees: + - Flynn Cruse +--- + +# Refactor/implement Level Up System in frontend + +## Description + + + +## Metadata + +- **Jira Issue**: TUT-575 +- **Created**: 10/Mar/25 3:23 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Align Class Name left in Student Home Calendar +status: ready +labels: + - task +--- + +# Align Class Name left in Student Home Calendar + +## Description + +!unnamed.png|width=512,height=449,alt="unnamed.png"! + +## Metadata + +- **Jira Issue**: TUT-574 +- **Created**: 10/Mar/25 3:05 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Student homepage Class Name instead of Subject +status: ready +labels: + - task +--- + +# Student homepage Class Name instead of Subject + +## Description + +!unnamed.png|width=512,height=302,alt="unnamed.png"! + +## Metadata + +- **Jira Issue**: TUT-573 +- **Created**: 10/Mar/25 3:05 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Teacher homepage refinements 2 +status: ready +labels: + - task +assignees: + - Flynn Cruse +--- + +# Teacher homepage refinements 2 + +## Description + +!unnamed.png|width=512,height=271,alt="unnamed.png"! + +## Metadata + +- **Jira Issue**: TUT-572 +- **Created**: 10/Mar/25 3:04 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: level in progress bar is undefined for assessment review +status: ready +labels: + - bug +assignees: + - Peter Apazidis +--- + +# level in progress bar is undefined for assessment review + +## Description + +the progress bar in the assessment review page says undefined when it should show the correct level the user is currently at + +## Metadata + +- **Jira Issue**: TUT-571 +- **Created**: 10/Mar/25 12:28 PM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: e +status: ready +labels: + - task +--- + +# e + +## Description + +![image-20250310-143524.png|width=991,height=644,alt="image-20250310-143524.png"! + +Add “Presented by Wolfram” + +## Metadata + +- **Jira Issue**: TUT-570 +- **Created**: 10/Mar/25 8:35 AM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Make Learning Assessment Review Page Render Latex +status: ready +labels: + - task +--- + +# Make Learning Assessment Review Page Render Latex + +## Description + +![image-20250310-020054.png|width=512,height=253,alt="image-20250310-020054.png"! + +## Metadata + +- **Jira Issue**: TUT-569 +- **Created**: 09/Mar/25 8:00 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Enforce Prompt Service Homework Guardrails. +status: ready +labels: + - task +assignees: + - Ted +--- + +# Enforce Prompt Service Homework Guardrails. + +## Description + +Scanned a homework problem earlier and it gave me the exact answer. + +We need a solution to make certain this doesn't happen. +We really don’t want to deploy a bot to schools that just solves homework problems! + +**Suggestions welcome.* + +Ideas: +Enhance mathematics tutor prompt. +[https://github.com/RightPathAI/Cletude-Prompt-Service/blob/main/src/cletude_prompt/config/prompts/tutor/mathematics/system.txt|https://github.com/RightPathAI/Cletude-Prompt-Service/blob/main/src/cletude_prompt/config/prompts/tutor/mathematics/system.txt|smart-link] + +Enhance wolfram prompt +[https://github.com/RightPathAI/Cletude-Prompt-Service/blob/main/src/cletude_prompt/config/prompts/wolfram/core.txt|https://github.com/RightPathAI/Cletude-Prompt-Service/blob/main/src/cletude_prompt/config/prompts/wolfram/core.txt|smart-link] +[https://github.com/RightPathAI/Cletude-Prompt-Service/blob/main/src/cletude_prompt/config/prompts/wolfram/tool_selection.txt|https://github.com/RightPathAI/Cletude-Prompt-Service/blob/main/src/cletude_prompt/config/prompts/wolfram/tool_selection.txt|smart-link] +Enhance prompt-path so that when wolfram tool is chosen: +We uses answers from wolfram to tutor the student in that direction, and check students answers rather than responding that answer to the student. +Make check to never respond with the answer from wolfram? + + + +!scanned-problem-gave-answer.png|width=1904,height=911,alt="scanned-problem-gave-answer.png"! + +## Metadata + +- **Jira Issue**: TUT-568 +- **Created**: 09/Mar/25 7:48 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Improve Docker-ization of Ed Tech Platform DB API in preparation of deployment to ECS +status: ready +labels: + - task +assignees: + - Ted +--- + +# Improve Docker-ization of Ed Tech Platform DB API in preparation of deployment to ECS + +## Description + + + +## Metadata + +- **Jira Issue**: TUT-567 +- **Created**: 09/Mar/25 7:27 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Deploy AWS Elastic Container Service - ECS - For Prompt Service +status: ready +labels: + - task + - Walid +--- + +# Deploy AWS Elastic Container Service - ECS - For Prompt Service + +## Description + +Select deployment branch ensure up-to-date. +Update Environment Variable Secrets in build.sh of branch being deployed +Update Environment Variables in Secrets Manager And Codebuild references to secrets. +[https://us-east-1.console.aws.amazon.com/codesuite/codebuild/891377393440/projects/cletude-prod-DeploymentPipeline-1HD02BNOCHDV0-CodeBuildProjectBackend/details?region=us-east-1|https://us-east-1.console.aws.amazon.com/codesuite/codebuild/891377393440/projects/cletude-prod-DeploymentPipeline-1HD02BNOCHDV0-CodeBuildProjectBackend/details?region=us-east-1] +Push update to branch selected for deployment. + +![image-20250310-011646.png|width=1385,height=686,alt="image-20250310-011646.png"! + +Observe Code pipeline facilitate deployment. +Document issues with Code Pipeline. Create Issues and solve until Prompt Service is Deployed. + +!AWS Deployment of Prompt Service Via EC2.mp4|width=1920,height=1080,alt="AWS Deployment of Prompt Service Via EC2.mp4"! + +## Metadata + +- **Jira Issue**: TUT-566 +- **Created**: 09/Mar/25 7:18 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Fix chat formatting on reload +status: ready +labels: + - bug +assignees: + - Peter Apazidis +--- + +# Fix chat formatting on reload + +## Description + +When the page is reloaded on the chat-interface page the formatting of the tutor response is all out of whack and doesn’t render latex appropriately. + +## Metadata + +- **Jira Issue**: TUT-565 +- **Created**: 09/Mar/25 7:34 AM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: Voice Options Responsivity +status: ready +labels: + - other +assignees: + - Bennett David +--- + +# Voice Options Responsivity + +## Description + +Menu of available voices ideally scales to user window, and user can scroll within so neither the top/bottom of the menu are cut off. + +## Metadata + +- **Jira Issue**: TUT-564 +- **Created**: 09/Mar/25 7:23 AM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Teacher Calendar Responsivity +status: ready +labels: + - task +assignees: + - Peter Apazidis +--- + +# Teacher Calendar Responsivity + +## Description + +# *Page Size* - Too large (optimize responsivity for smaller screen sizes so the calendar fits on one page without requiring scrolling) +#* Too much whitespace; make it more similar to the student calendar view. + +## Metadata + +- **Jira Issue**: TUT-563 +- **Created**: 08/Mar/25 3:25 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Student Home page responsivity +status: ready +labels: + - task +assignees: + - Peter Apazidis +--- + +# Student Home page responsivity + +## Description + +* *Homepage (Student)* +* Responsivity +** Not optimized small screen - needs to go right to left to fit - we should see whole screen and it re-arrange (scroll vertical if needed)/dynamically resize to fit instead +** Also requires scrolling down +** *Graph Y-Axis* needs optimization +** *Select Topic* - Decrease font size to fit in bubble + +## Metadata + +- **Jira Issue**: TUT-562 +- **Created**: 08/Mar/25 3:15 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Achievements Page refinement - remove 2 stats +status: ready +labels: + - task +assignees: + - Flynn Cruse +--- + +# Achievements Page refinement - remove 2 stats + +## Description + +*Remove* - Bottom two stats on page (average engagement time & average test score) + +## Metadata + +- **Jira Issue**: TUT-561 +- **Created**: 07/Mar/25 10:34 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Activity Graph Numerical Breakdowns +status: ready +labels: + - task +--- + +# Activity Graph Numerical Breakdowns + +## Description + +# *Graph* - Not optimized +# *Page Size* - Too large, not optimized +#* *Update Graph Y-Axis* + +## Metadata + +- **Jira Issue**: TUT-560 +- **Created**: 07/Mar/25 10:06 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Learning Assessment Multitopic +status: ready +labels: + - bug +assignees: + - Ted +--- + +# Learning Assessment Multitopic + +## Description + +If multiple topic areas selected for learning assessment, fails to create (sub-topics within a single topic area work fine) + +## Metadata + +- **Jira Issue**: TUT-559 +- **Created**: 07/Mar/25 1:54 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Deepgram Transcription Re-implement / Fix +status: ready +labels: + - task +assignees: + - Flynn Cruse +--- + +# Deepgram Transcription Re-implement / Fix + +## Description + +Fix the deepgram transcription capabilities & test + +## Metadata + +- **Jira Issue**: TUT-558 +- **Created**: 06/Mar/25 6:16 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Manual testing +status: ready +labels: + - task +--- + +# Manual testing + +## Description + +Test by running the site and utilizing every piece of it! + +* *report bugs to team and solve.* + +* Sign up teacher. Check database stored all info. Check onboarding flow against Figma. +** Create class. +** Upload Curriculum (syllabus) +** Upload files to nodes +** Delete files from nodes +** Delete nodes +** + +* Sign up student. Check database stored all info. Check onboarding flow against Figma. +** Add student to class. +** Remove student from class. +* Chat Interface testing: +** Conduct (MANY) chats in chat interface (differing subjects/topics/units); report bugs to team and solve. +** Conduct (MANY) OCR scans +** Check voice functionalities +** Check deepgram transcription functionalities +* Learning Assessment testing: +** Conduct (MANY) assessments (differing subjects/topics/units) +** Review with tutor many times +** See learning assessment summary many times. + +## Metadata + +- **Jira Issue**: TUT-557 +- **Created**: 06/Mar/25 5:59 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Tutorial Documentation +status: ready +labels: + - task +assignees: + - Max Brie +--- + +# Tutorial Documentation + +## Description + +For CS launch we will need tutorial documentation, I will begin to prepare any needed documentation for this and get videos on our youtube. + +## Metadata + +- **Jira Issue**: TUT-556 +- **Created**: 06/Mar/25 5:57 PM +- **Reporter**: Max Brie + +---ISSUE--- + +--- +title: Signup Fixes +status: ready +labels: + - task +assignees: + - Flynn Cruse +--- + +# Signup Fixes + +## Description + +-Bug: Last-name not being stored in database.- + +-Add curriculum management to teacher onboarding flow.- + +## Metadata + +- **Jira Issue**: TUT-555 +- **Created**: 06/Mar/25 5:50 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Demo Video Creation +status: ready +labels: + - task +assignees: + - Max Brie +--- + +# Demo Video Creation + +## Description + +Using our new platform I want to begin making our demo video. Not sure what timeline will look like as team wraps up but creating a one minute demo will be needed for schools. + +## Metadata + +- **Jira Issue**: TUT-554 +- **Created**: 06/Mar/25 5:48 PM +- **Reporter**: Max Brie + +---ISSUE--- + +--- +title: YC APP #3 +status: ready +labels: + - task +--- + +# YC APP #3 + +## Description + +Going to re apply to YC - third time is the charm. + +## Metadata + +- **Jira Issue**: TUT-553 +- **Created**: 06/Mar/25 5:43 PM +- **Reporter**: Max Brie + +---ISSUE--- + +--- +title: User cost breakdown +status: ready +labels: + - task +--- + +# User cost breakdown + +## Description + +In order to offer discounts we need to understand our costs a little bit more per student. My goal this week is to work with the team to understand our costs a little more and how our discounts effect our revenue short / long term. + +## Metadata + +- **Jira Issue**: TUT-552 +- **Created**: 06/Mar/25 5:43 PM +- **Reporter**: Max Brie + +---ISSUE--- + +--- +title: Replace "Topic" with "Unit" Throughout Site +status: ready +labels: + - task +assignees: + - Flynn Cruse +--- + +# Replace "Topic" with "Unit" Throughout Site + +## Description + +Topic = Unit {Database = kg_node, title} + +Sub-topic = topic {Database = kg_node, topic} + +## Metadata + +- **Jira Issue**: TUT-551 +- **Created**: 06/Mar/25 5:38 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Achievements Page Responsivity +status: ready +labels: + - task +--- + +# Achievements Page Responsivity + +## Description + +# *Not Responsive - optimize dynamic scaling (css) for smaller screens* +# *Your Badges Box* - Too large + +## Metadata + +- **Jira Issue**: TUT-550 +- **Created**: 06/Mar/25 5:37 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Games Page Replace Images +status: ready +labels: + - task +assignees: + - Flynn Cruse +--- + +# Games Page Replace Images + +## Description + +[~accountid:712020:7ffafc10-2b28-4e54-8a28-ff62fdb2b55d] find images, share with [~accountid:712020:ce112fd3-3c52-401f-90fb-e714d9dce114] to update page. + +*Reformat Previous Pictures* + +## Metadata + +- **Jira Issue**: TUT-549 +- **Created**: 06/Mar/25 5:36 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Locker Refinement (Token # on small screen) +status: ready +labels: + - task +assignees: + - Flynn Cruse +--- + +# Locker Refinement (Token # on small screen) + +## Description + +*Token Number* (cost) - Font size adjustment for smaller screens - currently costs in three figures don’t render cleanly (newline); smaller font dynamically to fix. + +## Metadata + +- **Jira Issue**: TUT-548 +- **Created**: 06/Mar/25 5:35 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Chat History Refinements +status: ready +labels: + - task +assignees: + - Flynn Cruse +--- + +# Chat History Refinements + +## Description + +h3. *Chat History* + +# *-Topic Filter-* -- Hardcoded - Delete entirely- +## Flynn - decided fuck that; fixed it properly. Now it’s not hardcoded! +# *Dates* - Not descending order sometimes… bug + +*-After Viewing Summary-* -- "Go to conversation" is broken -fix (or remove as time allows)- + +## Metadata + +- **Jira Issue**: TUT-547 +- **Created**: 06/Mar/25 5:35 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Learning Assessment Review Chat Interface Refactor +status: ready +labels: + - task +--- + +# Learning Assessment Review Chat Interface Refactor + +## Description + +*Review with Tutor* + +- Create ‘Review-chat-interface’ which inherits ‘chat-interface’ functionality + + +* Remove auto click topic. + +* Implement topic auto-selection without popup. + +## Metadata + +- **Jira Issue**: TUT-546 +- **Created**: 06/Mar/25 5:34 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Learning Assessment Refinements +status: ready +labels: + - task +assignees: + - Flynn Cruse +--- + +# Learning Assessment Refinements + +## Description + +h3. *Learning Assessment* + +# *-Topic Selection-* -- Rewording needed (unit not topic)- +# *-Cap Question Limit-* -- Limit to 5 questions- +## [https://github.com/RightPathAI/Tutechy-Frontend/pull/175|https://github.com/RightPathAI/Tutechy-Frontend/pull/175|smart-link] + +# *Short Responses* - Not actually short -Prompt service refinement for “short response questions” +## Screenshot responses and share with Backend team (Ted) for refinement + +## Metadata + +- **Jira Issue**: TUT-545 +- **Created**: 06/Mar/25 5:33 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Fix OCR Issues | Refactor away from image recognition +status: ready +labels: + - task +assignees: + - Flynn Cruse +--- + +# Fix OCR Issues | Refactor away from image recognition + +## Description + +h3. *OCR Issues* + +# *Image & Text Alignment* - Not centered +# *AI Message Pop-up* - When a student asks a question, AI message “begin array” appears.  +- Latex formatting of scanned messages ? +# *Instead of Image recognition and auto-scanning; implement take photo with spacebar/click.* +## Comment out / scrap image recognition for now + +## Metadata + +- **Jira Issue**: TUT-544 +- **Created**: 06/Mar/25 5:32 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Implement Discovery mode - Chat Interface +status: ready +labels: + - task +assignees: + - Flynn Cruse +--- + +# Implement Discovery mode - Chat Interface + +## Description + +Add a “Discovery Mode” selection to all classes; allows for interaction with tutors, without selecting a topic. + +## Metadata + +- **Jira Issue**: TUT-543 +- **Created**: 06/Mar/25 5:31 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Chat Interface Refinements +status: ready +labels: + - task +assignees: + - Flynn Cruse +--- + +# Chat Interface Refinements + +## Description + +h3. *Tutor Page / Chat-interface -*  + +# *AI Voice* - test and fix bugs +## *Voice Mode* - Settings menu is too large on small screens - make responsive +# *-Follow-Up Questions-* -- change to 3 from 5- +# *-Teacher-Student View-* -- Change to dropdown- +# *Topics* - Not appearing in title + +*BUG: default topics display when first accessing the chat-interface. Should only show the actual topics for the class.* + +## Metadata + +- **Jira Issue**: TUT-542 +- **Created**: 06/Mar/25 5:30 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Student Home Page Refinements +status: ready +labels: + - task +assignees: + - Flynn Cruse +--- + +# Student Home Page Refinements + +## Description + +h3. *Home Page - Student view*  + +* Functionality: +** Update Tutors to show class-names +** -Change spelling of “Antoinne” to “Antoine”- +*** [https://github.com/RightPathAI/Tutechy-Frontend/pull/147|https://github.com/RightPathAI/Tutechy-Frontend/pull/147|smart-link] + +## Metadata + +- **Jira Issue**: TUT-541 +- **Created**: 06/Mar/25 5:29 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Class Management Teacher View Refinements (remove elements) +status: ready +labels: + - task +assignees: + - Flynn Cruse +--- + +# Class Management Teacher View Refinements (remove elements) + +## Description + +h3. *Your Class - Teacher view*  + +# *Topics:* +#* *Text:* AVG Test Score → Amount per week (Remove) + +*Remove:* AVG Engagement Time & AVG Test Score + +## Metadata + +- **Jira Issue**: TUT-540 +- **Created**: 06/Mar/25 5:28 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Teacher - Calendar Refinements +status: ready +labels: + - task +assignees: + - Flynn Cruse +--- + +# Teacher - Calendar Refinements + +## Description + +h3. *Your Calendar - Teacher view*  + +# -Topics display - Selected topics not displaying under events on side view @flynn fixed!- + +## Metadata + +- **Jira Issue**: TUT-539 +- **Created**: 06/Mar/25 5:27 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Teacher Home Page Refinements +status: ready +labels: + - task +assignees: + - Flynn Cruse +--- + +# Teacher Home Page Refinements + +## Description + +# *-Top Bar-* -- Teacher view not optimized (text doesn’t fit on smaller screen cleanly)-  +#* -Decrease # of characters in class code- +#* -Make the teacher/student switch a dropdown from the avatar icon.- +#** [https://github.com/RightPathAI/Tutechy-Frontend/pull/145|https://github.com/RightPathAI/Tutechy-Frontend/pull/145|smart-link] +# *-Home-page Calendar Upcoming Events-* -- Topic not displaying- + +## Metadata + +- **Jira Issue**: TUT-538 +- **Created**: 06/Mar/25 5:27 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: fix short answer response grading +status: ready +labels: + - bug +assignees: + - Peter Apazidis +--- + +# fix short answer response grading + +## Description + +Grading is not being done correctly, fix it so that it correctly grades questions. + +## Metadata + +- **Jira Issue**: TUT-537 +- **Created**: 05/Mar/25 1:48 PM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: fix uneven locker cards +status: ready +labels: + - bug +assignees: + - Peter Apazidis +--- + +# fix uneven locker cards + +## Description + +The cards for the items on the locker page are inconsistently justified and uneven. This is because when the titles have more than one word the second word wraps and causes the card image to move down. + + + +!AD_4nXfOWnPX7trPozTJ5NGbT89ocpRaODUgrdoVkpfZupTcmnqVzCNHQ_olV7TL4Eb2VHLjFOIWe_FTRRhZBncI2ET0lxKRe0dVNGIdYO59HSI4s-efHBduvJ2-LdHbGhiBtQ8ST26OzQ?key=uFQT4fOCar3UX8fH7p5mvH8r|width=1600,height=1033! + +## Metadata + +- **Jira Issue**: TUT-536 +- **Created**: 04/Mar/25 7:07 AM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: Highlight current date in calendar +status: ready +labels: + - enhancement +assignees: + - Peter Apazidis +--- + +# Highlight current date in calendar + +## Description + +The current date needs to be highlighted in indigo in accordance with the wireframes on the calendar page. + +## Metadata + +- **Jira Issue**: TUT-535 +- **Created**: 03/Mar/25 12:20 PM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: make colors on calendar more contrasted with background +status: ready +labels: + - bug +assignees: + - Peter Apazidis +--- + +# make colors on calendar more contrasted with background + +## Description + +It is difficult to differentiate the colors associated with each class with the background of the container. Make the colors darker. + +## Metadata + +- **Jira Issue**: TUT-534 +- **Created**: 03/Mar/25 11:46 AM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: fix incorrect date on student homepage for events +status: ready +labels: + - bug +assignees: + - Peter Apazidis +--- + +# fix incorrect date on student homepage for events + +## Description + +The date for an event seems to be one day later than it is supposed to be for the upcoming events component on the student homepage. + +## Metadata + +- **Jira Issue**: TUT-533 +- **Created**: 03/Mar/25 11:44 AM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: Bug Hunt +status: ready +labels: + - task +assignees: + - Bennett David +--- + +# Bug Hunt + +## Description + + + +## Metadata + +- **Jira Issue**: TUT-532 +- **Created**: 27/Feb/25 7:10 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Logo Styling +status: ready +labels: + - bug +--- + +# Logo Styling + +## Description + +‘they’re pmo' -Ted + +## Metadata + +- **Jira Issue**: TUT-531 +- **Created**: 27/Feb/25 6:55 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: User Icons in Chat Interface +status: ready +labels: + - bug +--- + +# User Icons in Chat Interface + +## Description + +Should ensure that the selected tutor shows as the profile photo on the left edge of the chat interface, and that the sender/user has their profile photo show for messages on the right edge of the chat interface. + +## Metadata + +- **Jira Issue**: TUT-530 +- **Created**: 27/Feb/25 6:54 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Class Drop +status: ready +labels: + - enhancement +--- + +# Class Drop + +## Description + +Ideally, users should be able to Drop classes at will. + +## Metadata + +- **Jira Issue**: TUT-529 +- **Created**: 27/Feb/25 6:29 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Fix incorrect learning assessment grading +status: ready +labels: + - bug +assignees: + - Peter Apazidis +--- + +# Fix incorrect learning assessment grading + +## Description + +The learning assessment is not getting graded correctly. The numerical grade is incorrect. + +## Metadata + +- **Jira Issue**: TUT-527 +- **Created**: 27/Feb/25 2:48 PM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: adjust y-axis of user activity graph +status: ready +labels: + - enhancement +assignees: + - Peter Apazidis +--- + +# adjust y-axis of user activity graph + +## Description + +Adjust the units on the y-axis of the user activity graph so that there are not as many points and their precision is lower + +## Metadata + +- **Jira Issue**: TUT-526 +- **Created**: 26/Feb/25 12:58 PM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: Make Curriculum section responsive on teacher/home +status: ready +labels: + - task +assignees: + - Peter Apazidis +--- + +# Make Curriculum section responsive on teacher/home + +## Description + + + +## Metadata + +- **Jira Issue**: TUT-524 +- **Created**: 26/Feb/25 11:28 AM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Voice Output - Eleven Labs? +status: ready +labels: + - task +assignees: + - Flynn Cruse +--- + +# Voice Output - Eleven Labs? + +## Description + +Build voice output, hookup eleven labs. +1. hardcode voice id’s for each tutor. + +* later on implement voice id’s into database + +Voice ID: Anna - gKDyLTHvXI2M1dVbbuuE (African American Women) + +## Metadata + +- **Jira Issue**: TUT-523 +- **Created**: 26/Feb/25 9:37 AM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Curriculum Upload Refinements +status: ready +labels: + - task +assignees: + - Flynn Cruse +--- + +# Curriculum Upload Refinements + +## Description + +Refine UI for uploading curriculum/syllabus with a better loading interface. + + + +Create Node-view based UI: + +![image-20250226-161707.png|width=1143,height=748,alt="image-20250226-161707.png"! + +## Metadata + +- **Jira Issue**: TUT-522 +- **Created**: 26/Feb/25 9:20 AM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: A bunch of errors repeatedly appear upon logging into the app +status: ready +labels: + - bug +--- + +# A bunch of errors repeatedly appear upon logging into the app + +## Description + +Check image attached + +## Metadata + +- **Jira Issue**: TUT-521 +- **Created**: 25/Feb/25 7:52 AM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: Fix learning assessment results +status: ready +labels: + - task +assignees: + - Flynn Cruse +--- + +# Fix learning assessment results + +## Description + +Add functionality to the “review with Tutor” and “view assessment results” + +![image-20250224-051711.png|width=800,height=496,alt="image-20250224-051711.png"! + +## Metadata + +- **Jira Issue**: TUT-520 +- **Created**: 23/Feb/25 10:17 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Create Student-Preview functionality for Teachers. +status: ready +labels: + - task +assignees: + - Flynn Cruse +--- + +# Create Student-Preview functionality for Teachers. + +## Description + +# Create database migration for a {{max-role}} column. +## This column would contain “teacher” for teacher users. Allowing teachers to change their role between student and teacher based on a toggle-switch. +## The column contains just “student” for student users. They cannot switch roles. +## The column contains “Admin” for admin users. They can switch to teachers, or students, or back to admin. +# Create a toggle switch for toggling between student and teacher, only visible to those with “Teacher” in the max role column. +# implement switching functionality for student preview. + + +## Metadata + +- **Jira Issue**: TUT-519 +- **Created**: 23/Feb/25 10:16 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: ECS Code Pipeline & Deployment +status: ready +labels: + - task +assignees: + - Drew +--- + +# ECS Code Pipeline & Deployment + +## Description + +* Cletude Prompt Service +** Continue work on the ECS pipelines for the Prompt Service. + + + +* RDS API Layer +* Frontend +Verify that the deployed instance on EC2 is correctly running and accessible as intended. Document and communicate issues for React team to work on as needed. + +## Metadata + +- **Jira Issue**: TUT-518 +- **Created**: 23/Feb/25 8:35 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Refactor sign up flow +status: ready +labels: + - task +--- + +# Refactor sign up flow + +## Description + +*Review School Sign-Up Flow* + +* Evaluate the current school ID field used in sign-up. Change to “string” store as name of school. +* Add a “school password” field for teachers to improve security (and prevent accidental sharing of school IDs). Store as uuid in database for now. Or in Cognito. + + +## Metadata + +- **Jira Issue**: TUT-517 +- **Created**: 23/Feb/25 8:31 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Address Build and Linting Issues +status: ready +labels: + - task + - high-priority +assignees: + - Flynn Cruse +--- + +# Address Build and Linting Issues + +## Description + +* Investigate why building with “next build” (versus “pnpm run build”) triggers many TypeScript/ESLint errors. +** Investigation yielded that package.json scripts section has +```"build": "next build --no-lint", // get rid of no lint +"start": "next start -p 3002", // next start -H 127.0.0.1 -p 8182 | we experienced issues on a fresh IP``` +* Address the TypeScript issues directly. + +## Metadata + +- **Jira Issue**: TUT-516 +- **Created**: 23/Feb/25 8:29 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Investigate deployment version authentication issues +status: ready +labels: + - task +assignees: + - Ted +--- + +# Investigate deployment version authentication issues + +## Description + +When ran in EC2 with: + +```sudo node_modules/.bin/next start -H 0.0.0.0 -p 80``` + +users are unable to sign in. + +* Debug why sign-in fails with “unable to get user session” and the “User need to be authenticated to call this API” error. +* Verify the Cognito integration and token handling, including testing in incognito mode to rule out cached credentials. + + + +* Investigate the “unable to get user session” error that appears after signing in. +* Debug the missing third Cognito request (the one that should return the access token). +* Ensure that the flow for calling the API (including token handling) is consistent in both local and production environments. + +## Metadata + +- **Jira Issue**: TUT-515 +- **Created**: 23/Feb/25 8:26 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Verify and Update Environment Variables +status: ready +labels: + - task +assignees: + - Flynn Cruse +--- + +# Verify and Update Environment Variables + +## Description + +Confirm that the .env (or equivalent) files on both local and deployed environments match what’s expected. + +Remove redundant variables. + + +Deployment version: + +* Check that the front-end configuration (e.g., API URLs for the RDS API and Prompt Service) is correct and not still pointing to localhost. + +## Metadata + +- **Jira Issue**: TUT-514 +- **Created**: 23/Feb/25 8:24 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Achievements Page UI Refactor +status: ready +labels: + - task +assignees: + - Flynn Cruse +--- + +# Achievements Page UI Refactor + +## Description + +Add tooltips explaining achievements. +Add grey-scaled/black-and-white versions of unearned achievements. Color when earned. + +## Metadata + +- **Jira Issue**: TUT-513 +- **Created**: 23/Feb/25 8:23 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Clean Up Chat Page UI Response Formatting +status: ready +labels: + - task +assignees: + - Ted +--- + +# Clean Up Chat Page UI Response Formatting + +## Description + +Break long text blocks into proper paragraphs and adjust spacing. +Ensure functional LaTeX and Markdown rendering. +Reduce whitespace so that input and response text blocks aren’t so far pushed to either side on large screens. + +## Metadata + +- **Jira Issue**: TUT-512 +- **Created**: 23/Feb/25 8:22 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Fix Topic Selection Breaking Bug - arrays instead of strings - topics +status: ready +labels: + - task +assignees: + - Flynn Cruse +--- + +# Fix Topic Selection Breaking Bug - arrays instead of strings - topics + +## Description + +Branch: sub-topic-fixes + +Refactor topic handling to use arrays instead of JSON strings for topics + +## Metadata + +- **Jira Issue**: TUT-511 +- **Created**: 22/Feb/25 3:03 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Locker Page Responsivity and Image bug fixes +status: ready +labels: + - task +assignees: + - Flynn Cruse +--- + +# Locker Page Responsivity and Image bug fixes + +## Description + +Branch: fix/locker + +the locker page images didn’t resize appropriately. Also some images didn’t render because they were named incorrectly. +Fixed and merged now! + +## Metadata + +- **Jira Issue**: TUT-510 +- **Created**: 22/Feb/25 1:32 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: fix onboarding screen constantly showing on login +status: ready +labels: + - bug +assignees: + - Peter Apazidis +--- + +# fix onboarding screen constantly showing on login + +## Description + +When a user who has previously logged into the app logs in again, they are still taken through the onboarding process. They should instead be directly logged in. + +## Metadata + +- **Jira Issue**: TUT-509 +- **Created**: 21/Feb/25 3:01 PM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: TuToken (rugpull) +status: ready +labels: + - other +assignees: + - Flynn Cruse +--- + +# TuToken (rugpull) + +## Description + + + +## Metadata + +- **Jira Issue**: TUT-508 +- **Created**: 20/Feb/25 7:27 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Calendar Select +status: ready +labels: + - bug +assignees: + - Flynn Cruse +--- + +# Calendar Select + +## Description + +De-selecting one event unfortunately hides all events. + +## Metadata + +- **Jira Issue**: TUT-507 +- **Created**: 20/Feb/25 6:16 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: fix labels for upcoming events screen +status: ready +labels: + - bug +assignees: + - Peter Apazidis +--- + +# fix labels for upcoming events screen + +## Description + +The labels need to be colored in correspondence to the class that it is a part of. The label should disappear when the chip class component has been clicked and the eye is closed. + +## Metadata + +- **Jira Issue**: TUT-506 +- **Created**: 20/Feb/25 6:05 PM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: Fix labels and chips for upcoming events screen +status: ready +labels: + - bug +assignees: + - Peter Apazidis +--- + +# Fix labels and chips for upcoming events screen + +## Description + +The events chip components for the upcoming events screen needs to show all the classes that a user is in. Each class should be rendered with a different background color. The labels that correspond to each chip needs to also be the same color. + +## Metadata + +- **Jira Issue**: TUT-505 +- **Created**: 20/Feb/25 6:02 PM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: Finish RPAI Website video +status: ready +labels: + - task +assignees: + - Max Brie +--- + +# Finish RPAI Website video + +## Description + +Needed a new video for website. Will send in group chat tomorrow, will take feedback and push up by end of weekend. + +## Metadata + +- **Jira Issue**: TUT-504 +- **Created**: 20/Feb/25 5:52 PM +- **Reporter**: Max Brie + +---ISSUE--- + +--- +title: Wall street documents +status: ready +labels: + - task +assignees: + - Max Brie +--- + +# Wall street documents + +## Description + +Prepare high quality financial documents for due diligence. + +(Need more info on network costs) + +## Metadata + +- **Jira Issue**: TUT-503 +- **Created**: 20/Feb/25 5:52 PM +- **Reporter**: Max Brie + +---ISSUE--- + +--- +title: Micro Grant +status: ready +labels: + - task +assignees: + - Max Brie +--- + +# Micro Grant + +## Description + +Follow up on grants - want to apply to some next week. + +## Metadata + +- **Jira Issue**: TUT-502 +- **Created**: 20/Feb/25 5:51 PM +- **Reporter**: Max Brie + +---ISSUE--- + +--- +title: Referral program B2C +status: ready +labels: + - task +assignees: + - Max Brie +--- + +# Referral program B2C + +## Description + +We need to empower our network. What deals do we offer for people if they refer us. + + +## Metadata + +- **Jira Issue**: TUT-501 +- **Created**: 20/Feb/25 5:50 PM +- **Reporter**: Max Brie + +---ISSUE--- + +--- +title: Social Media - 48 hours +status: ready +labels: + - task +assignees: + - Max Brie +--- + +# Social Media - 48 hours + +## Description + +Clean up Linkedin, push our page to more followers and activity. + +Want to be consistent with 48 hours instagram and Linkedin posts + +## Metadata + +- **Jira Issue**: TUT-500 +- **Created**: 20/Feb/25 5:49 PM +- **Reporter**: Max Brie + +---ISSUE--- + +--- +title: Investigate on campus integration/LTI +status: ready +labels: + - enhancement +assignees: + - Ted +--- + +# Investigate on campus integration/LTI + +## Description + +[Learning Tools Interoperability | 1EdTech|https://www.1edtech.org/standards/lti] + +## Metadata + +- **Jira Issue**: TUT-499 +- **Created**: 20/Feb/25 5:23 PM +- **Reporter**: Ted + +---ISSUE--- + +--- +title: Misc cleanup tasks +status: ready +labels: + - enhancement +assignees: + - Ted +--- + +# Misc cleanup tasks + +## Description + +* Iam role for aws ocr  +* Content check  after.  +* Multi document upload for ingest. +* Add boolean response to llm interface  +* Add class name + +## Metadata + +- **Jira Issue**: TUT-498 +- **Created**: 20/Feb/25 5:20 PM +- **Reporter**: Ted + +---ISSUE--- + +--- +title: Token Tracking +status: ready +labels: + - enhancement +assignees: + - Ted +--- + +# Token Tracking + +## Description + +should track token usage and return in header + +## Metadata + +- **Jira Issue**: TUT-497 +- **Created**: 20/Feb/25 5:20 PM +- **Reporter**: Ted + +---ISSUE--- + +--- +title: Finalize prompt templates for all prompts +status: ready +labels: + - enhancement +assignees: + - Ted +--- + +# Finalize prompt templates for all prompts + +## Description + + + +## Metadata + +- **Jira Issue**: TUT-496 +- **Created**: 20/Feb/25 5:19 PM +- **Reporter**: Ted + +---ISSUE--- + +--- +title: Material ingestion ocr +status: ready +labels: + - enhancement +assignees: + - Ted +--- + +# Material ingestion ocr + +## Description + +add support for unreadable pdf, pptx, and word doc + +## Metadata + +- **Jira Issue**: TUT-495 +- **Created**: 20/Feb/25 5:18 PM +- **Reporter**: Ted + +---ISSUE--- + +--- +title: FUNDING +status: ready +labels: + - task +assignees: + - Max Brie +--- + +# FUNDING + +## Description + +Blast out funding documents. - Continue to push with over 50 VC’s reached by end of next week! + +## Metadata + +- **Jira Issue**: TUT-494 +- **Created**: 20/Feb/25 3:49 PM +- **Reporter**: Max Brie + +---ISSUE--- + +--- +title: Angel Network +status: ready +labels: + - task +assignees: + - Max Brie +--- + +# Angel Network + +## Description + +Source and Post In CS Group chats - Fundraise announcement. + +## Metadata + +- **Jira Issue**: TUT-493 +- **Created**: 20/Feb/25 3:48 PM +- **Reporter**: Max Brie + +---ISSUE--- + +--- +title: Make all tutor cards in achievements page visible +status: ready +labels: + - bug +assignees: + - Peter Apazidis +--- + +# Make all tutor cards in achievements page visible + +## Description + +The tutor cards were being cut off when they overflow their container, preventing users from seeing all of the tutors. Now overflow is handled by wrapping the tutor cards on to the next line. + +## Metadata + +- **Jira Issue**: TUT-492 +- **Created**: 19/Feb/25 8:25 AM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: DB-API: Remove hardcoded subjects +status: ready +labels: + - bug +assignees: + - Peter Apazidis +--- + +# DB-API: Remove hardcoded subjects + +## Description + +on the DB-API backend, remove the lowercased, hardcoded subjects for the tutors. The prompt service backend now handles sending the correct tutor types. + +## Metadata + +- **Jira Issue**: TUT-491 +- **Created**: 18/Feb/25 10:13 PM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: Implement suggested queries feature into chat session +status: ready +labels: + - task +assignees: + - Flynn Cruse +--- + +# Implement suggested queries feature into chat session + +## Description + +Integrate endpoint for suggested questions based on selected nodes & previous query/response into frontend with clickable buttons. + +Prompt service endpoint: + +```curl -X POST "http://localhost:8001/tutor/follow_up_questions" \ +-H "Content-Type: application/json" \ +-d '{ + "original_query": "", + "tutor_response": "", + "max_questions": 5, + "conversation_history": [], + "node_id": "0332dac0-f231-4339-9819-c5c7db3a7b16" +}'``` + +## Metadata + +- **Jira Issue**: TUT-490 +- **Created**: 17/Feb/25 2:00 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Refactor 'teacher calendar' to utilize RDS instead of being hardcoded +status: ready +labels: + - task +assignees: + - Flynn Cruse +--- + +# Refactor 'teacher calendar' to utilize RDS instead of being hardcoded + +## Description + +The teacher-calendar & teacher-home page previously used hardcoded logic and displayed the same events for every class. It needs to be updated to allow teachers to create new events for their individual classes. + +For now, remove the file-upload button from the calendar events to simplify the logic for version 1. At a later-date we can re-implement file uploads for calendar events. We can store files in an S3 and store their location for retrieval. + +## Metadata + +- **Jira Issue**: TUT-489 +- **Created**: 17/Feb/25 1:31 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Fix the learning assessment flow +status: ready +labels: + - bug +assignees: + - Peter Apazidis +--- + +# Fix the learning assessment flow + +## Description + +Fix/implement the learning assessment flow for a student so that: + + +* a student can select topics, number of questions, and difficulty for the assessment +* the assessment displays the correct number of questions once the user has filled these out and clicks the begin button +* the responses are accurately recorded in the app logic and processed accordingly +* the assessment correctly grades the performance of the student and shows a correct grade at the end + +## Metadata + +- **Jira Issue**: TUT-488 +- **Created**: 17/Feb/25 12:56 PM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: Last names of teachers are not being stored in the DB +status: ready +labels: + - bug +--- + +# Last names of teachers are not being stored in the DB + +## Description + +Make sure that the last names of teachers get stored in the DB when a teacher is created in the signup screen + +## Metadata + +- **Jira Issue**: TUT-487 +- **Created**: 13/Feb/25 6:08 PM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: Fix error from creating assessments +status: ready +labels: + - bug +assignees: + - Ted +--- + +# Fix error from creating assessments + +## Description + +Currently there is an error that occurs when a user tries to create an assessment, and that prevents the user from creating an assessment. This bug will need to be fixed so that an assessment can be created. When it is created, it should be reflected in the database + +## Metadata + +- **Jira Issue**: TUT-486 +- **Created**: 13/Feb/25 6:07 PM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: Social Media first week of posts +status: ready +labels: + - task +assignees: + - Max Brie +--- + +# Social Media first week of posts + +## Description + +Upload all social media posts for Linkedin and Instagram - First week fully covered. + +## Metadata + +- **Jira Issue**: TUT-485 +- **Created**: 13/Feb/25 5:57 PM +- **Reporter**: Max Brie + +---ISSUE--- + +--- +title: Announcements and posts +status: ready +labels: + - task +assignees: + - Max Brie +--- + +# Announcements and posts + +## Description + +Ensure all posts are live on instagram and Linkedin - Make sure advisors have access to proper documents + +## Metadata + +- **Jira Issue**: TUT-484 +- **Created**: 13/Feb/25 5:56 PM +- **Reporter**: Max Brie + +---ISSUE--- + +--- +title: First 30 VC Emails Sent +status: ready +labels: + - task +assignees: + - Max Brie +--- + +# First 30 VC Emails Sent + +## Description + +Send out first VC emails / Family office + +## Metadata + +- **Jira Issue**: TUT-483 +- **Created**: 13/Feb/25 5:55 PM +- **Reporter**: Max Brie + +---ISSUE--- + +--- +title: Finish Launch Video +status: ready +labels: + - task +assignees: + - Max Brie +--- + +# Finish Launch Video + +## Description + +Finalize filming and editing of launch video. + +## Metadata + +- **Jira Issue**: TUT-482 +- **Created**: 13/Feb/25 5:55 PM +- **Reporter**: Max Brie + +---ISSUE--- + +--- +title: Launch Website (Ensure sizing) +status: ready +labels: + - task +assignees: + - Max Brie +--- + +# Launch Website (Ensure sizing) + +## Description + +Launch Framer website - Make sure it looks good on all platforms. + +## Metadata + +- **Jira Issue**: TUT-481 +- **Created**: 13/Feb/25 5:54 PM +- **Reporter**: Max Brie + +---ISSUE--- + +--- +title: Implement Proper Avatar Layering in Locker Page +status: ready +labels: + - task +assignees: + - Flynn Cruse +--- + +# Implement Proper Avatar Layering in Locker Page + +## Description + +Ensure the student locker page correctly displays the user’s selected avatar and manages the layering of purchased assets. + +## Metadata + +- **Jira Issue**: TUT-480 +- **Created**: 13/Feb/25 5:49 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Refine the Games Page (Pending Game Deployment) +status: ready +labels: + - task +--- + +# Refine the Games Page (Pending Game Deployment) + +## Description + +Develop the Games Page by embedding games directly into the frontend. This task is dependent on the finalization and deployment of games to S3 buckets and CloudFront. + +## Metadata + +- **Jira Issue**: TUT-479 +- **Created**: 13/Feb/25 5:48 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Build “View Summary” Page for Chat History +status: ready +labels: + - task +assignees: + - Flynn Cruse +--- + +# Build “View Summary” Page for Chat History + +## Description + +Create a “View Summary” page that displays a summary of past chat interactions. Use the existing endpoint in the Prompt service ({{utils/summarize_history}}). + +## Metadata + +- **Jira Issue**: TUT-478 +- **Created**: 13/Feb/25 5:48 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Implement Auto-Scroll in Chat (Low Priority) +status: ready +labels: + - task +--- + +# Implement Auto-Scroll in Chat (Low Priority) + +## Description + +Enhance the chat interface by adding auto-scroll functionality so that new messages appear seamlessly. + +## Metadata + +- **Jira Issue**: TUT-477 +- **Created**: 13/Feb/25 5:47 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Render LaTeX and Markdown in Tutor Responses +status: ready +labels: + - task +--- + +# Render LaTeX and Markdown in Tutor Responses + +## Description + +Update the tutor chat interface to correctly render LaTeX and Markdown formatting in responses. + +## Metadata + +- **Jira Issue**: TUT-476 +- **Created**: 13/Feb/25 5:47 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Fix “Take Photo” Feature in Chat +status: ready +labels: + - task +assignees: + - Ted +--- + +# Fix “Take Photo” Feature in Chat + +## Description + +Currently, clicking “Take Photo” does not work. Investigate and fix the issue so that students can take and upload profile pictures. + +## Metadata + +- **Jira Issue**: TUT-475 +- **Created**: 13/Feb/25 5:46 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Implement “Send” Button for Voice Mode +status: ready +labels: + - task +assignees: + - Flynn Cruse +--- + +# Implement “Send” Button for Voice Mode + +## Description + +Add a visible “Send” button for students using voice mode in chat. + +## Metadata + +- **Jira Issue**: TUT-474 +- **Created**: 13/Feb/25 5:46 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Update User Avatar Display in Chat +status: ready +labels: + - task +assignees: + - Flynn Cruse +--- + +# Update User Avatar Display in Chat + +## Description + +Ensure that the chat screen reflects the user’s selected avatar correctly. + +## Metadata + +- **Jira Issue**: TUT-473 +- **Created**: 13/Feb/25 5:46 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Display Relevant Topics in Chat Based on Curriculum +status: ready +labels: + - task +assignees: + - Flynn Cruse +--- + +# Display Relevant Topics in Chat Based on Curriculum + +## Description + +Modify the chat page to show topics that correspond to the selected tutor and the student’s class curriculum/knowledge graph. + +## Metadata + +- **Jira Issue**: TUT-472 +- **Created**: 13/Feb/25 5:45 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Render Correct Tutor Avatar in Chat Screen - Frontend (student) +status: ready +labels: + - task +assignees: + - Flynn Cruse +--- + +# Render Correct Tutor Avatar in Chat Screen - Frontend (student) + +## Description + +Ensure that the tutor chat page displays the correct avatar for the selected tutor. + +## Metadata + +- **Jira Issue**: TUT-471 +- **Created**: 13/Feb/25 5:44 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Integrate Appropriate Content Endpoint into Application +status: ready +labels: + - task +--- + +# Integrate Appropriate Content Endpoint into Application + +## Description + +Places to integrate appropriate-content moderation checks: + +* Setting Hobbies +* -User Queries to stream-tutor- +* Selecting game subjects + +## Metadata + +- **Jira Issue**: TUT-470 +- **Created**: 13/Feb/25 5:43 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Prevent editing of class code - Teacher +status: ready +labels: + - task +assignees: + - Flynn Cruse +--- + +# Prevent editing of class code - Teacher + +## Description + +h4. *Prevent Editing of Class Code* + +*Description:* +Modify the class edit functionality so that teachers can only edit the class name but not the class code to avoid database conflicts. + +## Metadata + +- **Jira Issue**: TUT-469 +- **Created**: 13/Feb/25 5:41 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Rename “Upcoming Tests” to “Upcoming Events” +status: ready +labels: + - task +assignees: + - Flynn Cruse +--- + +# Rename “Upcoming Tests” to “Upcoming Events” + +## Description + +Update the UI and references where “Upcoming Tests” appears and change it to “Upcoming Events” for consistency. + +## Metadata + +- **Jira Issue**: TUT-468 +- **Created**: 13/Feb/25 5:35 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: integrate knowledge graph id +status: ready +labels: + - enhancement +assignees: + - Ted +--- + +# integrate knowledge graph id + +## Description + +* Take in knowledge graph id on the stream tutor endpoint / account for there being no knowledge graph.  + +## Metadata + +- **Jira Issue**: TUT-467 +- **Created**: 13/Feb/25 5:35 PM +- **Reporter**: Ted + +---ISSUE--- + +--- +title: Update & Fix User Activity Graph +status: ready +labels: + - task +assignees: + - Flynn Cruse +--- + +# Update & Fix User Activity Graph + +## Description + +Teacher View: Implement Class Average Time Display +Update the frontend teacher-view activity graph to display more granular detail: We should make hovering over the days in the teacher view provide granular detail; which students spent how much time, the total time spent, and then the average-student-time spent. + +Update the Student activity view to actually display the activity. + +Update the y-axis to start at 0. + +Github: +[https://github.com/RightPathAI/Tutechy-Frontend/pull/96|https://github.com/RightPathAI/Tutechy-Frontend/pull/96|smart-link] +[https://github.com/RightPathAI/Ed-Tech-Platform-DB-API/pull/53|https://github.com/RightPathAI/Ed-Tech-Platform-DB-API/pull/53|smart-link] + + +## Metadata + +- **Jira Issue**: TUT-466 +- **Created**: 13/Feb/25 5:34 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Integrate content into prompts +status: ready +labels: + - enhancement +assignees: + - Ted +--- + +# Integrate content into prompts + +## Description + +* Integrate node content  +* Integrate conversation history +* Integrate User Data + +## Metadata + +- **Jira Issue**: TUT-465 +- **Created**: 13/Feb/25 5:34 PM +- **Reporter**: Ted + +---ISSUE--- + +--- +title: Restrict Teacher Access to Assigned Classes +status: ready +labels: + - task +assignees: + - Flynn Cruse +--- + +# Restrict Teacher Access to Assigned Classes + +## Description + +Modify access permissions so that teachers can only view and manage the classes they are assigned to, instead of all classes within their school. + +## Metadata + +- **Jira Issue**: TUT-464 +- **Created**: 13/Feb/25 5:34 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Implement Email Authorization Service for Student Signup +status: ready +labels: + - task +--- + +# Implement Email Authorization Service for Student Signup + +## Description + +On student registration, send an email to the respective teacher for approval. Ensure the email contains student details and relevant class information. + +## Metadata + +- **Jira Issue**: TUT-463 +- **Created**: 13/Feb/25 5:33 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Implement Email Authorization for Teacher Signup +status: ready +labels: + - task +--- + +# Implement Email Authorization for Teacher Signup + +## Description + +On teacher registration, send an email to the school admin for approval. Ensure the email includes relevant details about the teacher for review. + +## Metadata + +- **Jira Issue**: TUT-462 +- **Created**: 13/Feb/25 5:32 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Integrate AI-Driven Multi-Round Wordle Game into Existing Games API & Database Schema +status: ready +labels: + - task +assignees: + - Flynn Cruse +--- + +# Integrate AI-Driven Multi-Round Wordle Game into Existing Games API & Database Schema + +## Description + +* *Database Schema Enhancements:* +** Extend the Prisma schema by adding new models ({{WordleGameSession}}, {{Round}}, {{Guess}}, {{GuessLetter}}, and {{LetterStatus}} enum) to store detailed Wordle game data (including per-letter feedback). +** Maintain the existing {{games}} and {{game_stats}} models to support other games. +* *API Endpoint Development:* +** Create new endpoints for Wordle game operations (session creation, round creation, guess submission, etc.) that integrate seamlessly with our current authorization and routing setup. +** Ensure endpoints validate inputs and handle errors appropriately. +* *Frontend Integration:* +** Prepare the backend to be consumed by our React frontend, enabling users to access and play the AI-driven Wordle game using the established authorization mechanisms. + + +* -Setup local database with docker, to test migrations.- +* -Update schema and seed db data - + +## Metadata + +- **Jira Issue**: TUT-461 +- **Created**: 13/Feb/25 4:20 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Add 'upload additional content' button to each node of curriculum to teachers homepage +status: ready +labels: + - task +assignees: + - Flynn Cruse +--- + +# Add 'upload additional content' button to each node of curriculum to teachers homepage + +## Description + +[https://github.com/RightPathAI/Tutechy-Frontend/pull/73|https://github.com/RightPathAI/Tutechy-Frontend/pull/73|smart-link] + +Supporting Arose’s work setting up knowledge graphs by creating the frontend components to facilitate file uploads to specific nodes. + +## Metadata + +- **Jira Issue**: TUT-460 +- **Created**: 13/Feb/25 4:10 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Fixes - Build, formatting, Sidebar Games Routing +status: ready +labels: + - task +assignees: + - Flynn Cruse +--- + +# Fixes - Build, formatting, Sidebar Games Routing + +## Description + +Fixed build on both Frontend and RDS API. +Fixed formatting of both repositories using prettier. +Added routing for the sidebar to the games page. + +## Metadata + +- **Jira Issue**: TUT-459 +- **Created**: 13/Feb/25 4:08 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Setup Github Actions for Frontend and RDS API Layers +status: ready +labels: + - task +assignees: + - Flynn Cruse +--- + +# Setup Github Actions for Frontend and RDS API Layers + +## Description + +Setup: + +* type check +* format check (prettier) +* build check + +## Metadata + +- **Jira Issue**: TUT-458 +- **Created**: 13/Feb/25 4:04 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Consolidated backend APIs, enhanced tutor features, and added enrollment settings - PR #65 +status: ready +labels: + - task +assignees: + - Flynn Cruse +--- + +# Consolidated backend APIs, enhanced tutor features, and added enrollment settings - PR #65 + +## Description + +Update all tutor images. +Consolidate express and next endpoints that both pointed to RDS API layer into single API endpoint. +Create class enrollment settings menu + +## Metadata + +- **Jira Issue**: TUT-457 +- **Created**: 13/Feb/25 4:03 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: implement markdown rendering in chat interface +status: ready +labels: + - enhancement +assignees: + - Ted +--- + +# implement markdown rendering in chat interface + +## Description + +Ensure that the frontend correctly renders markdown code + +## Metadata + +- **Jira Issue**: TUT-456 +- **Created**: 11/Feb/25 12:48 PM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: fix glitchy responsiveness for tutors in student dashboard +status: ready +labels: + - enhancement +assignees: + - Peter Apazidis +--- + +# fix glitchy responsiveness for tutors in student dashboard + +## Description + +The tutors in student dashboard were getting cut off within the container they are displayed in, preventing users from being able to see all their tutors. Additionally, whenever the user goes into the browser console, the container of the tutor cards was being shrunk by a significant amount, despite being in the same size window. + +## Metadata + +- **Jira Issue**: TUT-455 +- **Created**: 10/Feb/25 10:34 AM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: Angel network creation +status: ready +labels: + - task +assignees: + - Max Brie +--- + +# Angel network creation + +## Description + +Need all docs for angel network as well as posts for Christ School alumni within groups… Follow up with Thomas. + +## Metadata + +- **Jira Issue**: TUT-454 +- **Created**: 06/Feb/25 6:25 PM +- **Reporter**: Max Brie + +---ISSUE--- + +--- +title: Finalize LOI Agreements +status: ready +labels: + - task +assignees: + - Max Brie +--- + +# Finalize LOI Agreements + +## Description + +Draft and update LOI agreements. + +## Metadata + +- **Jira Issue**: TUT-453 +- **Created**: 06/Feb/25 6:24 PM +- **Reporter**: Max Brie + +---ISSUE--- + +--- +title: Referral program +status: ready +labels: + - task +assignees: + - Max Brie +--- + +# Referral program + +## Description + +We need to create a referral program where schools can get big discounts for getting us into schools. Need to run numbers. + +## Metadata + +- **Jira Issue**: TUT-452 +- **Created**: 06/Feb/25 6:23 PM +- **Reporter**: Max Brie + +---ISSUE--- + +--- +title: VC COMPILE +status: ready +labels: + - task +assignees: + - Max Brie +--- + +# VC COMPILE + +## Description + +Prepare list of first 30 VC funds. + +## Metadata + +- **Jira Issue**: TUT-450 +- **Created**: 06/Feb/25 6:22 PM +- **Reporter**: Max Brie + +---ISSUE--- + +--- +title: optimize validation +status: ready +labels: + - enhancement +assignees: + - Ted +--- + +# optimize validation + +## Description + +go through models and optimize validation. + +For high-volume endpoints, consider strategies like caching or pre-compiling the schema definitions if your framework supports it. + +## Metadata + +- **Jira Issue**: TUT-449 +- **Created**: 06/Feb/25 5:48 PM +- **Reporter**: Ted + +---ISSUE--- + +--- +title: figure out problem with teacher signup +status: ready +labels: + - enhancement +--- + +# figure out problem with teacher signup + +## Description + +Figure out why we are getting an axios error when we try to sign up a teacher. + +## Metadata + +- **Jira Issue**: TUT-448 +- **Created**: 06/Feb/25 3:06 PM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: async operations +status: ready +labels: + - task +assignees: + - Ted +--- + +# async operations + +## Description + +apply consistent async operations across repository + +## Metadata + +- **Jira Issue**: TUT-447 +- **Created**: 30/Jan/25 4:47 PM +- **Reporter**: Ted + +---ISSUE--- + +--- +title: shutdown logic. +status: ready +labels: + - task +assignees: + - Ted +--- + +# shutdown logic. + +## Description + +make sure resources shutdown, especially db connection + +## Metadata + +- **Jira Issue**: TUT-446 +- **Created**: 30/Jan/25 4:45 PM +- **Reporter**: Ted + +---ISSUE--- + +--- +title: Codebase consistency +status: ready +labels: + - task +assignees: + - Ted +--- + +# Codebase consistency + +## Description + +make sure code standards and patterns are applied consistently across the codebase + +## Metadata + +- **Jira Issue**: TUT-445 +- **Created**: 30/Jan/25 4:44 PM +- **Reporter**: Ted + +---ISSUE--- + +--- +title: Document Ingestion file type support +status: ready +labels: + - task +assignees: + - Ted +--- + +# Document Ingestion file type support + +## Description + +implement file processing for unreadable pdfs, word docs, txts, images, png, jpg + +## Metadata + +- **Jira Issue**: TUT-444 +- **Created**: 30/Jan/25 4:43 PM +- **Reporter**: Ted + +---ISSUE--- + +--- +title: Launch website and brand +status: ready +labels: + - task +assignees: + - Max Brie +--- + +# Launch website and brand + +## Description + +Prepare remaining items for post announcing TuTechy. This will be a great flow into the rest of the week and we get Mr.K approval for post on Tuesday at lunch. + +## Metadata + +- **Jira Issue**: TUT-443 +- **Created**: 30/Jan/25 3:59 PM +- **Reporter**: Max Brie + +---ISSUE--- + +--- +title: Google Video +status: ready +labels: + - task +assignees: + - Max Brie +--- + +# Google Video + +## Description + +Collect sales video recording needed of tutor interface. + +## Metadata + +- **Jira Issue**: TUT-442 +- **Created**: 30/Jan/25 3:56 PM +- **Reporter**: Max Brie + +---ISSUE--- + +--- +title: Leave behind documentation +status: ready +labels: + - task +assignees: + - Max Brie +--- + +# Leave behind documentation + +## Description + +Create custom leave behind documents for CS and Rabun Gap. Create an information sheet for teachers. QR leading to sign up + +## Metadata + +- **Jira Issue**: TUT-441 +- **Created**: 30/Jan/25 3:55 PM +- **Reporter**: Max Brie + +---ISSUE--- + +--- +title: Pitch deck Competition +status: ready +labels: + - task +assignees: + - Max Brie +--- + +# Pitch deck Competition + +## Description + +Text is all there.. Will now need to shorten and put in artwork. Will need done for feb 2 + +## Metadata + +- **Jira Issue**: TUT-440 +- **Created**: 30/Jan/25 3:54 PM +- **Reporter**: Max Brie + +---ISSUE--- + +--- +title: implement basic OCR from Cletude to TuTechy +status: ready +labels: + - enhancement +assignees: + - Peter Apazidis +--- + +# implement basic OCR from Cletude to TuTechy + +## Description + +Implement the OCR that we had on Cletude in TuTechy. It should have the same functionality. + +## Metadata + +- **Jira Issue**: TUT-439 +- **Created**: 30/Jan/25 2:44 PM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: create forgot password pages +status: ready +labels: + - enhancement +assignees: + - Peter Apazidis +--- + +# create forgot password pages + +## Description + +We need a page for the user to input their email so that an email with a code can be sent to them to verify they are who they say they are. Then they need to be able to input the code that gets sent to their email when they have clicked the “forgot password” button. The code confirmation page will contain 3 input fields: the code, the new password, and confirmation of the new password. + +## Metadata + +- **Jira Issue**: TUT-438 +- **Created**: 30/Jan/25 12:35 PM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: Complete T&C With lewis +status: ready +labels: + - task +assignees: + - Max Brie +--- + +# Complete T&C With lewis + +## Description + +50% of the way there need Lewis to complete review and figure out remaining items. + +## Metadata + +- **Jira Issue**: TUT-437 +- **Created**: 23/Jan/25 5:59 PM +- **Reporter**: Max Brie + +---ISSUE--- + +--- +title: Figure out why max isn't able to get auth working +status: ready +labels: + - enhancement +--- + +# Figure out why max isn't able to get auth working + +## Description + +I had tried to get Max to be able to sign in to TuTechy locally, however for some reason the environment variables in his code are not being read. We need to figure out why this is happening. + +## Metadata + +- **Jira Issue**: TUT-436 +- **Created**: 23/Jan/25 5:45 PM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: WebGL Game Infra +status: ready +labels: + - other +assignees: + - Bennett David +--- + +# WebGL Game Infra + +## Description + +h2. Objective + +Research and document the optimal approach for hosting Unity WebGL games through S3 and CloudFront, using [https://rightpathai.atlassian.net/browse/TUT-364|https://rightpathai.atlassian.net/browse/TUT-364|smart-link] for proof of concept. This will establish the foundation for future game deployments and kick off [https://rightpathai.atlassian.net/browse/TUT-373|https://rightpathai.atlassian.net/browse/TUT-373|smart-link] + +h2. Key Questions + +# What is the optimal S3/CloudFront architecture for hosting Unity WebGL games? Are there better viable alternatives, especially within AWS? +# How should Unity game repositories be structured for AWS deployment? +# How can we automate the build and deployment process through CI/CD? + +h2. Success Criteria + +* Working proof of concept with Wordle clone deployed via S3/CloudFront +* Documented, repeatable process for future game deployments +* Automated CI/CD pipeline for builds and deployments + +h2. Next Steps + +# Investigate Unity WebGL build requirements +# Test S3/CloudFront configurations, alternatives +# Develop CI/CD approach + +## Metadata + +- **Jira Issue**: TUT-435 +- **Created**: 17/Jan/25 2:57 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Make pages customizable for individualization of schools +status: ready +labels: + - enhancement +--- + +# Make pages customizable for individualization of schools + +## Description + +Make it so that a school can add a brand to the website. Refer to this: [https://docs.google.com/document/d/1yX2cBIr43zE8ZcbXriBdPzFvRYkgVY00w547wDOteeI/edit?usp=sharing|https://docs.google.com/document/d/1yX2cBIr43zE8ZcbXriBdPzFvRYkgVY00w547wDOteeI/edit?usp=sharing|smart-link] + +## Metadata + +- **Jira Issue**: TUT-434 +- **Created**: 15/Jan/25 6:39 PM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: Social Media Designs Complete +status: ready +labels: + - task +--- + +# Social Media Designs Complete + +## Description + +* Design post templates for all platforms +* Create image templates +* Develop caption guidelines +* Create hashtag strategy + +## Metadata + +- **Jira Issue**: TUT-433 +- **Created**: 15/Jan/25 6:01 PM +- **Reporter**: Max Brie + +---ISSUE--- + +--- +title: Financial Route Decision +status: ready +labels: + - task +assignees: + - Max Brie +--- + +# Financial Route Decision + +## Description + +* Evaluate all funding options +* Create comparison spreadsheet +* Document pros and cons of each route +* Calculate potential costs +* List requirements for each option + +## Metadata + +- **Jira Issue**: TUT-432 +- **Created**: 15/Jan/25 6:01 PM +- **Reporter**: Max Brie + +---ISSUE--- + +--- +title: Build Preliminary Pitch Deck +status: ready +labels: + - task +assignees: + - Max Brie +--- + +# Build Preliminary Pitch Deck + +## Description + +* Research successful pitch decks for comparison +* Document key components and must-have elements +* Create full slide-by-slide layout +* List required content for each section +* Design draft layout +* Build outline structure +* Add placeholder content +* Review competitive pitch decks + +## Metadata + +- **Jira Issue**: TUT-431 +- **Created**: 15/Jan/25 6:00 PM +- **Reporter**: Max Brie + +---ISSUE--- + +--- +title: Be able to parse all file names in S3 +status: ready +labels: + - enhancement +assignees: + - Ted +--- + +# Be able to parse all file names in S3 + +## Description + +As of now when a syllabus file gets uploaded to an S3 bucket, a problem arises on the backend/lambda function where file names containing special characters do not get parsed correctly and throw an error. We need to make it so that basic file names work regardless of special characters + +## Metadata + +- **Jira Issue**: TUT-430 +- **Created**: 15/Jan/25 5:42 PM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: Think of more endpoints we may need to construct +status: ready +labels: + - other +assignees: + - Peter Apazidis +--- + +# Think of more endpoints we may need to construct + +## Description + +Go through the wireframes again and think of endpoints we may need + +[https://docs.google.com/document/d/1lVb8oIboX7rqdTDZ15IJsQhIjmAXdXRwTh2lvSVpLlU/edit?tab=t.0|https://docs.google.com/document/d/1lVb8oIboX7rqdTDZ15IJsQhIjmAXdXRwTh2lvSVpLlU/edit?tab=t.0|smart-link] + +## Metadata + +- **Jira Issue**: TUT-429 +- **Created**: 15/Jan/25 5:16 PM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: File upload to S3 - inital try +status: ready +labels: + - enhancement +assignees: + - Peter Apazidis +--- + +# File upload to S3 - inital try + +## Description + +We need to get a basic connection going between the frontend and the S3 bucket where when a user uploads a file the file gets stored on S3. + +## Metadata + +- **Jira Issue**: TUT-428 +- **Created**: 15/Jan/25 4:54 PM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: Refactor Conversations API to Utilize Knowledge Graphs +status: ready +labels: + - task + - Arose +--- + +# Refactor Conversations API to Utilize Knowledge Graphs + +## Description + +Anticipating need to refactor conversations schema / api layer slightly to support knowledge graph integration properly. +TODO TBD. + +Also make Session-id a UUID since session ID is being removed from backend but we still need a unique identifier for conversations. + +## Metadata + +- **Jira Issue**: TUT-427 +- **Created**: 15/Jan/25 3:57 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Build Knowledge Graph Schema & API Endpoints for Curriculum Management +status: ready +labels: + - task +assignees: + - Flynn Cruse +--- + +# Build Knowledge Graph Schema & API Endpoints for Curriculum Management + +## Description + +Implement a minimal database schema and endpoints for creating, retrieving, and managing a knowledge graph composed of *nodes and edges*. This initial phase focuses on storing basic node information and the relationships (edges) between them. Future expansion will incorporate a dedicated *class table* for organizing knowledge graphs by class. + +*Endpoints* + +* -*POST* {{/api/knowledge-graph}}- + +Accepts JSON defining nodes and edges to create or update the knowledge graph. + +* - *GET /api/knowledge-graph/class/{classCode}:* Provides the entire graph for a specific class, fulfilling the GET requirement for retrieving the graph.- + +* -*POST* {{/api/knowledge-graph/node}}- + +Creates an individual node (supports optional content and examples). + +* -*GET* {{/api/knowledge-graph/node/{nodeId}}}- + +Retrieves details for a specific node (including its edges). + +*Schema* + +* *Nodes* +** {{node_id}}: Primary Key (UUID) +** {{title}}: String +** {{description}}: Text +** {{examples}}: JSON or Text (optional) +** {{content}}: Text (optional; placeholder for future embedding) +* *Edges* +** {{edge_id}}: Primary Key (UUID) +** {{from_node_id}}: Foreign Key to {{nodes.node_id}} +** {{to_node_id}}: Foreign Key to {{nodes.node_id}} +** (Optional) {{relationship_label}}: String describing edge + +h3. *Dependencies* + +* *Backend Vectorization (Future)* +** Once content is stored in nodes, a separate service will handle generating and storing vector embeddings. +* *Class Table (Future Build - Refining RDS Schemas)* +** A dedicated {{class_table}} with a unique ID (UUID) to link nodes or entire graphs to specific classes. +* *Frontend Integration* +** The UI will use these endpoints to create, visualize, and manage the knowledge graph. + + + + +h3. *Tasks* + +# *Database Creation* +#* Define and migrate {{nodes}} and {{edges}} tables. +# *Endpoint Development* +#* Implement create, read, delete routes for nodes and edges. +#* Return well-structured JSON for the entire knowledge graph. +# *Validation & Error Handling* +#* Validate inputs (unique {{node_id}}, correct edge references). +#* Provide meaningful error responses. +# *Testing* +#* Seed database with example data (e.g., Algebra 2 mini-graph). +#* Verify endpoints function as expected for basic CRUD operations. + + + +h3. *Acceptance Criteria* + +# *Schema & Endpoints* +#* The {{nodes}} and {{edges}} tables exist with correct relationships and fields. +#* Endpoints for creating, retrieving, and deleting nodes/edges are fully operational. +# *Basic Use Case* +#* Able to POST a JSON body representing multiple nodes and edges to build out a small graph. +#* GET request returns the entire graph structure in JSON. +# *Future-Proofing* +#* Code structure allows easy addition of a {{class_table}} for class-level grouping. +#* Prepared for integration with vectorization logic in subsequent phases. + +## Metadata + +- **Jira Issue**: TUT-426 +- **Created**: 14/Jan/25 11:39 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Achievements RDS API Development & Supporting Schema +status: ready +labels: + - task +assignees: + - Flynn Cruse +--- + +# Achievements RDS API Development & Supporting Schema + +## Description + +Implement Achievement System API & Schema for Student Engagement + +Initial Schema & Routes: + +* GET /api/badges/user/{userId} + +* Get all badges earned by a user +* Returns array of badges with earned_at timestamps + +Database Schema Requirements: + +* badges table: Store badge definitions +* user_badges table: Track badge awards with timestamps +* Proper foreign key relationships to users table + +Integration Requirements: + +* Badge checks triggered by relevant user actions +* Automatic badge awarding when conditions met +* Real-time updates to user profile +* Proper error handling and duplicate prevention + +Dependencies: + +* Activity tracking system +* User authentication +* Game stats tracking +* Assessment system +* Avatar/Store system + +*Core Objective* +Implement API layer & schema buildout to support badges/achievement milestone tracking for user incentivization. +Initial proposed achievements: + +```Achievement Title : Action user must take to achieve +School Superstar    :   Log the most hours in your entire school. +Platform Explorer   :   Try every feature on TuTechy, from games to tutoring sessions. +Streak Star Bronze  :   Log in and study for 5 consecutive days. +Streak Star Silver  :   Log in and study for 10 consecutive days. +Streak Star Gold    :   Log in and study for 15 consecutive days. +Gaming Guru     :   Play every available game at least once. +Social Butterfly    :   Interact with your tutor via voice or text ten times in a single month. +Lightning Focus :   Score 90%+ on three consecutive tests. +Avatar Master   :   Purchase items for your avatar 5 times. +High Score Hunter    :  Set the highest score in a specific game. +Level Up Legend     :   Increase your level by 3 in a single week.``` + + +Achievement System API Endpoints Checklist + +# School Activity Achievements +{adf:display=block} +{"type":"taskList","content":[{"type":"taskItem","content":[{"type":"text","text":" GET /api/badges/check/school-superstar/{userId}"}],"attrs":{"localId":"e383de52-7cd3-4ff4-9827-a40746eb33c5","state":"TODO"}}],"attrs":{"localId":"99be4944-310d-41a9-b30d-2d61c5a8860d"}} +{adf} + +* Checks if user has highest minutes_active in their school +* Dependencies: daily_activity table + +# Login Streak Achievements: +{adf:display=block} +{"type":"taskList","content":[{"type":"taskItem","content":[{"type":"text","text":" GET /api/badges/check/streaks/{userId}"}],"attrs":{"localId":"518beb6a-318a-4fb5-8c64-15195282095d","state":"TODO"}}],"attrs":{"localId":"f9bf0c6e-8f66-4a53-a62c-9d83a14a977b"}} +{adf} + +* Checks current streak against Bronze (5), Silver (10), Gold (15) thresholds +* Dependencies: login_streaks table + +# Platform Usage Achievement: +{adf:display=block} +{"type":"taskList","content":[{"type":"taskItem","content":[{"type":"text","text":" GET /api/badges/check/platform-explorer/{userId}"}],"attrs":{"localId":"947da109-c1fc-44c7-8852-87522bb8b3b5","state":"TODO"}}],"attrs":{"localId":"406e70ad-b3ce-4594-8477-9cfcb641d013"}} +{adf} + +* Verifies user has tried all platform features +* Dependencies: game_stats, conversation_sessions, assessments, user_items, class_roster + +# Gaming Achievements: +{adf:display=block} +{"type":"taskList","content":[{"type":"taskItem","content":[{"type":"text","text":" GET /api/badges/check/gaming/{userId}"}],"attrs":{"localId":"1c46b207-867a-423e-8a6e-40e98acdc865","state":"TODO"}}],"attrs":{"localId":"d7469244-b154-4542-beac-513772928bde"}} +{adf} + +* Checks both Gaming Guru (all games played) and High Score Hunter +* Dependencies: game_stats table + +# Social Achievement: +{adf:display=block} +{"type":"taskList","content":[{"type":"taskItem","content":[{"type":"text","text":" GET /api/badges/check/social-butterfly/{userId}"}],"attrs":{"localId":"4e9da7cb-e153-4b74-acfe-7c42d24beff9","state":"TODO"}}],"attrs":{"localId":"bd111d99-7d04-425a-9eee-797b5859f579"}} +{adf} + +* Counts tutor interactions within current month +* Dependencies: conversation_sessions table + +# Academic Achievement: +{adf:display=block} +{"type":"taskList","content":[{"type":"taskItem","content":[{"type":"text","text":" GET /api/badges/check/lightning-focus/{userId}"}],"attrs":{"localId":"ce64d496-7429-4507-80df-31ffb24efe69","state":"TODO"}}],"attrs":{"localId":"0694496d-e326-40b7-9e4a-be09f08e0bb5"}} +{adf} + +* Checks last three assessment scores +* Dependencies: assessment_responses table + +# Avatar Achievement: +{adf:display=block} +{"type":"taskList","content":[{"type":"taskItem","content":[{"type":"text","text":" GET /api/badges/check/avatar-master/{userId}"}],"attrs":{"localId":"fd13b37e-bace-4582-8607-39b598d0f23c","state":"TODO"}}],"attrs":{"localId":"7b4ee9dd-134f-4a0b-94e7-15b92a39be91"}} +{adf} + +* Counts total item purchases +* Dependencies: user_items table + +# Level Progress: +{adf:display=block} +{"type":"taskList","content":[{"type":"taskItem","content":[{"type":"text","text":" GET /api/badges/check/level-legend/{userId}"}],"attrs":{"localId":"5f120d67-9e72-4517-b987-c8eae2564882","state":"TODO"}}],"attrs":{"localId":"669051a0-d818-4a8e-9338-9a48c97164c9"}} +{adf} + +* Checks level increase over past week +* Dependencies: users table (current_level) + +Utility Endpoints: + + +* GET /api/badges/user/{userId} + +* Get all currently earned badges + +* GET /api/badges/check/all/{userId} + +* Comprehensive check of all possible achievements +* Triggers checks for all achievement types + +## Metadata + +- **Jira Issue**: TUT-425 +- **Created**: 14/Jan/25 11:27 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Math/Sci Keyboard Input +status: ready +labels: + - enhancement +--- + +# Math/Sci Keyboard Input + +## Description + +We have OCR feature, but want to incentivize/enable people to type in such scripts. + +## Metadata + +- **Jira Issue**: TUT-424 +- **Created**: 09/Jan/25 7:27 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: RC1 Business Development +status: ready +labels: + - other +assignees: + - Max Brie +--- + +# RC1 Business Development + +## Description + +Ventures for the first TuTechy version // release candidate + +## Metadata + +- **Jira Issue**: TUT-423 +- **Created**: 09/Jan/25 6:56 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: set up S3 bucket for file uploads +status: ready +labels: + - enhancement +assignees: + - Peter Apazidis +--- + +# set up S3 bucket for file uploads + +## Description + + + +## Metadata + +- **Jira Issue**: TUT-422 +- **Created**: 09/Jan/25 6:27 PM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: Remove class code ID from signup component +status: ready +labels: + - enhancement +--- + +# Remove class code ID from signup component + +## Description + +The signup page contains a class code ID field that is not needed for the signup anymore. This value will be generated/handled in the code. There is no need to store it in cognito. + +## Metadata + +- **Jira Issue**: TUT-421 +- **Created**: 07/Jan/25 1:01 PM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: Pull all credentials from AWS Cred manager (if possible) +status: ready +labels: + - refactor +--- + +# Pull all credentials from AWS Cred manager (if possible) + +## Description + +Currently we have like 6 creds getting loaded into the container which are kinda spread out in the code so its not super easy to find all the dependencies, ideally these would be loaded in one place. Also, given that we have a bunch i think it would be ideal to have these in the AWS secret manager and only pass in the AWS secret manager credential as an environment variable. that way the container can pull all the creds from the secret manager, making it easier to rotate the creds used on our aws servers + +## Metadata + +- **Jira Issue**: TUT-420 +- **Created**: 03/Jan/25 2:57 PM +- **Reporter**: Drew + +---ISSUE--- + +--- +title: First Achievements +status: ready +labels: + - other +--- + +# First Achievements + +## Description + +Create a doc of at least 10 achievements - will likely end up being used for badge designs. + +## Metadata + +- **Jira Issue**: TUT-419 +- **Created**: 02/Jan/25 6:36 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Figure out best way to send/parse uploaded files +status: ready +labels: + - other +--- + +# Figure out best way to send/parse uploaded files + +## Description + +When users upload files for any reasons, we will need to parse them and we need to get an idea of how it should be done, whether it be pdf or other file types. We may want to use AWS for parsing or just use the backend. + +## Metadata + +- **Jira Issue**: TUT-418 +- **Created**: 02/Jan/25 6:32 PM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: Have the react team consolidate some of the branches +status: ready +labels: + - task +assignees: + - Peter Apazidis +--- + +# Have the react team consolidate some of the branches + +## Description + +Even though a lot of pages have been coded out, there is no branch that seems to contain all of the features, and there are no routes for pages. This ticket is to make sure the react team starts to incorporate the branches into one main branch. + +## Metadata + +- **Jira Issue**: TUT-417 +- **Created**: 02/Jan/25 6:28 PM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: Store some login credentials in RDS +status: ready +labels: + - enhancement +assignees: + - Flynn Cruse +--- + +# Store some login credentials in RDS + +## Description + +Some of the data we collect from singup/signin (such as class code) does not get stored in cognito. We will want to store this data in the RDS + +## Metadata + +- **Jira Issue**: TUT-416 +- **Created**: 02/Jan/25 6:26 PM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: Implement basic auth in TuTechy +status: ready +labels: + - enhancement +assignees: + - Peter Apazidis +--- + +# Implement basic auth in TuTechy + +## Description + +Continue work from [https://rightpathai.atlassian.net/browse/TUT-380|https://rightpathai.atlassian.net/browse/TUT-380|smart-link] for the TuTechy code that the react developers are working on. + +## Metadata + +- **Jira Issue**: TUT-415 +- **Created**: 02/Jan/25 6:24 PM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: Krieger 2025 Kickoff/Reachout +status: ready +labels: + - task +--- + +# Krieger 2025 Kickoff/Reachout + +## Description + +Reach out to Mr. Krieger again to kick off new year. + +## Metadata + +- **Jira Issue**: TUT-414 +- **Created**: 02/Jan/25 6:20 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: RPAI Website video update +status: ready +labels: + - task +--- + +# RPAI Website video update + +## Description + +Make new video on website + +## Metadata + +- **Jira Issue**: TUT-413 +- **Created**: 02/Jan/25 6:08 PM +- **Reporter**: Max Brie + +---ISSUE--- + +--- +title: Media Outreach (Attempt) +status: ready +labels: + - task +assignees: + - Max Brie +--- + +# Media Outreach (Attempt) + +## Description + +Develop a plan for *media outreach*, targeting newsletters and tech-focused publications. + +* Reach out to education blogs, tech media outlets, and local news in the U.S. to secure coverage. +* Leverage testimonials or endorsements from pilot schools and educators to build credibility. + +## Metadata + +- **Jira Issue**: TUT-412 +- **Created**: 02/Jan/25 5:49 PM +- **Reporter**: Max Brie + +---ISSUE--- + +--- +title: First 10 Days of Social Media (Launch) +status: ready +labels: + - task +assignees: + - Max Brie +--- + +# First 10 Days of Social Media (Launch) + +## Description + +Create a *social media plan* for the first 10 days post-launch to build excitement and engagement. + +* Schedule posts that highlight TuTechy’s unique features, such as gamification and tailored learning paths. +* Include team introductions, behind-the-scenes content, and user testimonials (if available). + +## Metadata + +- **Jira Issue**: TUT-411 +- **Created**: 02/Jan/25 5:47 PM +- **Reporter**: Max Brie + +---ISSUE--- + +--- +title: Finalize the naming conventions for all platform elements +status: ready +labels: + - task +assignees: + - Max Brie +--- + +# Finalize the naming conventions for all platform elements + +## Description + +* *Avatars* (e.g., Capybara and Koala names/themes). +* *XP System* and associated terms for leveling up. +* Gamification features like *challenges*, *streaks*, and *pop quizzes*. + +## Metadata + +- **Jira Issue**: TUT-410 +- **Created**: 02/Jan/25 5:46 PM +- **Reporter**: Max Brie + +---ISSUE--- + +--- +title: New elements for teacher portal - Tien +status: ready +labels: + - task +assignees: + - Max Brie +--- + +# New elements for teacher portal - Tien + +## Description + +Add Final features that we have added in + +## Metadata + +- **Jira Issue**: TUT-409 +- **Created**: 02/Jan/25 5:46 PM +- **Reporter**: Max Brie + +---ISSUE--- + +--- +title: Launch Website (ready) +status: ready +labels: + - task +assignees: + - Max Brie +--- + +# Launch Website (ready) + +## Description + +Implement feedback + +* Refine user experience (UX) to make navigation intuitive. +* Ensure calls-to-action, such as demo requests and sign-ups, are prominent. +* Double-check mobile responsiveness and performance optimization. + +## Metadata + +- **Jira Issue**: TUT-408 +- **Created**: 02/Jan/25 5:45 PM +- **Reporter**: Max Brie + +---ISSUE--- + +--- +title: Launch Video +status: ready +labels: + - task +assignees: + - Max Brie +--- + +# Launch Video + +## Description + +Plan, and book a *launch video* that introduces TuTechy and its mission to educators, students, and parents. + +* Highlight team members to build trust and relatability. +* Focus on key features like personalization, gamification, and ease of use. +* Begin planning additional video content, such as tutorials, testimonials, and updates, to maintain momentum after launch. + +## Metadata + +- **Jira Issue**: TUT-407 +- **Created**: 02/Jan/25 5:44 PM +- **Reporter**: Max Brie + +---ISSUE--- + +--- +title: Pricing Page Handoff +status: ready +labels: + - task +assignees: + - Max Brie +--- + +# Pricing Page Handoff + +## Description + +Collaborate with *Ted* to finalize the pricing page, ensuring it clearly communicates value to potential users. + +* Include pricing tiers with detailed benefits for each level (e.g., schools, educators, individual students). + +## Metadata + +- **Jira Issue**: TUT-406 +- **Created**: 02/Jan/25 5:43 PM +- **Reporter**: Max Brie + +---ISSUE--- + +--- +title: Compliance Check +status: ready +labels: + - task +assignees: + - Max Brie +--- + +# Compliance Check + +## Description + +Review and confirm compliance with all relevant *U.S. education regulations* to ensure a smooth beta launch. + +* Focus on *FERPA* (Family Educational Rights and Privacy Act) and *COPPA* (Children’s Online Privacy Protection Act) to protect student data. +* Verify that TuTechy’s data collection, storage, and usage practices align with federal and state laws. +* Consult with an *ed-tech compliance expert* to identify and address any potential gaps. + +## Metadata + +- **Jira Issue**: TUT-405 +- **Created**: 02/Jan/25 5:43 PM +- **Reporter**: Max Brie + +---ISSUE--- + +--- +title: Customization Options RDS API / S3 / Schema Development +status: ready +labels: + - task +assignees: + - Flynn Cruse +--- + +# Customization Options RDS API / S3 / Schema Development + +## Description + +Design and Implement storage of Assets via AWS S3, Organized by school-id. + + +{{Configuration:}} +{{Schools}} table with columns for {{school_id}}, {{customized_sidebar}} (Boolean), {{logo_url}}, and {{theme_colors}}. This setup enables efficient retrieval of branding information based on the user's {{school_id}}. + +*Storage of Assets:* Store logo images and other media assets in AWS S3, organizing them by {{school_id}} for straightforward access. + ++*Frontend Implementation:*+ +*Data Retrieval:* Upon user login, fetch the {{school_id}} and {{customized_sidebar}} status from the backend. If {{customized_sidebar}} is {{true}}, retrieve the corresponding {{logo_url}} and {{theme_colors}}. + +*Dynamic Theming:* Utilize React's theming capabilities to apply the retrieved branding. Libraries like {{styled-components}} or {{react-md}} can facilitate dynamic theming. For instance, {{react-md}} allows customization of colors and spacing with CSS variables, enabling runtime theme configuration. + +*Default Theme:* If a school hasn't opted for customization ({{customized_sidebar}} is {{false}}), apply a predefined default theme. + +*Considerations:* + +* *Scalability:* Ensure your architecture supports adding new schools and their customizations without significant modifications. A well-designed multi-tenant system can efficiently manage multiple tenants while maintaining isolation and customization. +* *Security:* Implement robust access controls to prevent unauthorized access to other schools' branding data. +* *Performance:* Optimize the retrieval and application of themes to prevent any lag in the user interface. + +## Metadata + +- **Jira Issue**: TUT-404 +- **Created**: 02/Jan/25 5:43 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Branding book +status: ready +labels: + - task +assignees: + - Max Brie +--- + +# Branding book + +## Description + +Develop an in-depth *branding document* that serves as the foundation for TuTechy’s identity. + +* Include color schemes, typography, logo guidelines, tone of voice, and messaging. +* Ensure it reflects TuTechy’s core values of trustworthiness, simplicity, and innovation. +* Provide practical examples for how branding should be applied across marketing materials, website design, and social media. + +## Metadata + +- **Jira Issue**: TUT-403 +- **Created**: 02/Jan/25 5:42 PM +- **Reporter**: Max Brie + +---ISSUE--- + +--- +title: Initial Outreach +status: ready +labels: + - task +--- + +# Initial Outreach + +## Description + +Begin outreach to *Christ School* and *Rabun Gap*, scheduling conversations and demos to introduce TuTechy. + +* Contact *Dr. Jenkins* and *Coach Miles* to share the platform’s vision and explore their interest in participating in the beta. +* Begin developing a teacher *pipeline* to gather detailed feedback on usability, effectiveness, and alignment with their teaching goals. Gather Testimonials.  + +## Metadata + +- **Jira Issue**: TUT-402 +- **Created**: 02/Jan/25 5:41 PM +- **Reporter**: Max Brie + +---ISSUE--- + +--- +title: Games Page Hosting Setup +status: ready +labels: + - task +assignees: + - Flynn Cruse +--- + +# Games Page Hosting Setup + +## Description + +Setup appropriate services and AWS infrastructure for hosting of games / coordinate with and oversee Reena/Lijo setting up infrastructure for hosting of games. + +* S3 Bucket for Unity Assets: Create an S3 bucket to store Unity WebGL builds and related files. +* CloudFront Distribution: Set up a CloudFront distribution in front of the S3 bucket for global caching and faster delivery of Unity assets. +* IAM Permissions: Configure IAM roles and policies so that CI/CD pipelines can upload Unity builds to S3. +* Modify Frontend Code: Update the React frontend code to reference Unity assets via the CloudFront URL rather than bundling them into the container image. +* Testing: Ensure that the frontend, when loaded, can retrieve and load Unity assets from CloudFront that are playable. + + +May need further research on embedding games via web-routing. + +## Metadata + +- **Jira Issue**: TUT-401 +- **Created**: 02/Jan/25 5:41 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Tutechy Tutorial +status: ready +labels: + - task +--- + +# Tutechy Tutorial + +## Description + +Create Tutorial video to stream for when students first log into the platform. + +## Metadata + +- **Jira Issue**: TUT-400 +- **Created**: 02/Jan/25 5:39 PM +- **Reporter**: Max Brie + +---ISSUE--- + +--- +title: Chat-History Page RDS API / Schema Development +status: ready +labels: + - task +assignees: + - Flynn Cruse +--- + +# Chat-History Page RDS API / Schema Development + +## Description + +Oversee/Develop the API routes for Chat-History homepage. +[Chat History Page documentation.|https://docs.google.com/document/d/1hyRwFOSKqwMYnOHqliy12aItRoEkDamH24lmmd1zVJk/edit?tab=t.ens065ho2e9v#heading=h.1bydcmpkcde5] + +* GET /api/conversations/history/{studentId} # returns 20 most recent conversations. Grouped by month +* GET /api/conversations/history/{studentId}/filter # Returns conversations matching filter +* GET /api/conversations/summary/{sessionId} # Returns summary of conversation +* -GET /api/conversations/session/{sessionId} # Returns full conversation detail for resuming a session- + +Develop Schema to support requests. + +## Metadata + +- **Jira Issue**: TUT-399 +- **Created**: 02/Jan/25 5:38 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Learning Assessment RDS API / Schema Development +status: ready +labels: + - task +assignees: + - Flynn Cruse +--- + +# Learning Assessment RDS API / Schema Development + +## Description + +Oversee/Develop the API routes for student homepage. +[Learning Assessment documentation.|https://docs.google.com/document/d/1hyRwFOSKqwMYnOHqliy12aItRoEkDamH24lmmd1zVJk/edit?tab=t.ti8p2mynlaly#heading=h.hg740zr2lrg1] + +RDS-API: + +* GET /api/topics/{tutor-subject}/{studentId} # returns array of topics and subtopics in subject. +* POST /api/assessment/store # store generated questions in RDS + +* Better define curriculum ingestion process & default topics. + +AI-API: + +* -Initialize sesson- +* -POST /practice_problems/{session_id} #send request for practice problems matching user specification- +* -POST /grade_short_responses/{session_id} # send request to grade short/long-answer problesm (response, true= correct, false = incorrect) +_Following the above call, new call to RDS:_- +* POST /api/assessment/complete/{assessmentId} #store completed assessment (questions, answers, grade, etc) + +Develop Schema to support requests. + +## Metadata + +- **Jira Issue**: TUT-398 +- **Created**: 02/Jan/25 5:34 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Tutor Conversation Page RDS API / Schema Development +status: ready +labels: + - task +assignees: + - Flynn Cruse +--- + +# Tutor Conversation Page RDS API / Schema Development + +## Description + +Oversee/Develop the API routes and Schema for Tutor conversation Page. [Documentation|https://docs.google.com/document/d/1hyRwFOSKqwMYnOHqliy12aItRoEkDamH24lmmd1zVJk/edit?tab=t.wuzegzta6u5w] + +* -AI API: post("/initialize_session") #initialize AI API sesion- + +* curl -X POST "http://localhost:8001/initialize_session?db_name=Panora_Cycle2_English&selected_textbook_section=Unit__2_1__Top_Right" +** Likely need to change to select topic and sub-topic (Co-ordinate with Ted & Backend Team) + +* Yet to be defined Topic & Subtopic selection API: tied to curriculum ingestion. With Defaults. +* -{{POST /api/conversations/{session-id}/{selected-topic(s)}/{Student-id} # Assign session-id to conv. so all interactions within that session are associated.}}- +* -AI API: GET /stream_tutor/{session_id} #send message to AI API, stream response- + +* curl -N "http://localhost:8001/stream_tutor/cf9f54ef-b012-441f-a40a-cf3a901b2848?user_input=What%20is%20the%20square%20root%20of%2025?" + +* -{{POST /api/conversations/{session-id}/{contents-of-message}/{student-id}/{message-number} # Store sent (by student), and received (from AI backend) messages in RDS.}}- +* -{{POST /api/xp/gain-xp/123/5 # Award user XP for each message - rework to award student's tutor XP.}}- +* -{{GET /api/xp/stats/123 # When session starts, get XP for initializing XP bar.}}- + +## Metadata + +- **Jira Issue**: TUT-397 +- **Created**: 02/Jan/25 3:57 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Locker page RDS API / Schema Development +status: ready +labels: + - task +assignees: + - Flynn Cruse +--- + +# Locker page RDS API / Schema Development + +## Description + +Oversee/Develop the API routes for Locker page. +[Locker Page Initial Docs|https://docs.google.com/document/d/1hyRwFOSKqwMYnOHqliy12aItRoEkDamH24lmmd1zVJk/edit?tab=t.p94qs570uigv] + +* -GET /api/credits/balance/{userId}- + +* -GET /api/items/equipped/{userId} #Returns all items equiped by a specific user- +* -GET /api/items #Returns list of all available virtual items in the shop- +* -GET /api/items/user/{userId} # Returns all items owned by a specific user- +* - POST /api/items/purchase # Processes item purchase for a user- +* -GET /api/items/inventory/{userId} # Returns combined information about owned and available items- +* -POST /api/items/equip # Equips or unequips an item for a user, and returns the complete updated equipped items state- + +Develop Schema to support requests. + + + +Potential error codes: + +* INVALID_POSITION + +* INVALID_ZINDEX + +* ITEM_NOT_EQUIPPED + +* CONFLICTING_POSITION + +* INSUFFICIENT_CREDITS + +* ITEM_NOT_FOUND + +* ITEM_ALREADY_OWNED + +* INVALID_USER + +* UNAUTHORIZED_ACCESS + +* INVALID_ITEM_TYPE + +## Metadata + +- **Jira Issue**: TUT-396 +- **Created**: 02/Jan/25 3:28 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Heartbeat System Development & Supporting Schema +status: ready +labels: + - task +assignees: + - Flynn Cruse +--- + +# Heartbeat System Development & Supporting Schema + +## Description + +Oversee/Develop the heartbeat signal system. Includes: Schema support, API routes, aggregation triggers. +[Initial documentation.|https://docs.google.com/document/d/1hyRwFOSKqwMYnOHqliy12aItRoEkDamH24lmmd1zVJk/edit?tab=t.hgosw5ysqcyy] + +* -POST /api/heartbeat/initialize- +* -POST /api/heartbeat/pulse- +* Implement root-level react component for activity tracker (see [Initial documentation.|https://docs.google.com/document/d/1hyRwFOSKqwMYnOHqliy12aItRoEkDamH24lmmd1zVJk/edit?tab=t.hgosw5ysqcyy]) +* Develop Schema to support requests. +* GET /api/student/stats/{student_id} #Note: Student stats (Student Homepage) is dependent on Platform-Wide Heartbeat signal. + +## Metadata + +- **Jira Issue**: TUT-395 +- **Created**: 02/Jan/25 3:24 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Student Homepage RDS API / Schema Development +status: ready +labels: + - task +assignees: + - Flynn Cruse +--- + +# Student Homepage RDS API / Schema Development + +## Description + +Oversee/Develop the API routes for student homepage. +[Initial documentation.|https://docs.google.com/document/d/1hyRwFOSKqwMYnOHqliy12aItRoEkDamH24lmmd1zVJk/edit?tab=t.z62942rm7mxx] + +* -GET /api/student/stats/{student_id}- + +Student stats is dependent on Platform-Wide Heartbeat signal + +* -GET /api/calendar/upcoming/{student_id}- + +Develop Schema to support requests. + +## Metadata + +- **Jira Issue**: TUT-394 +- **Created**: 02/Jan/25 3:19 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Monitoring & Maintenance +status: ready +labels: + - other +assignees: + - Ted +--- + +# Monitoring & Maintenance + +## Description + + Set up system monitoring + +* [ ] Add performance monitoring + +* [ ] Create backup procedures + +* [ ] Add system health checks + +## Metadata + +- **Jira Issue**: TUT-392 +- **Created**: 02/Jan/25 3:18 PM +- **Reporter**: Ted + +---ISSUE--- + +--- +title: Scaling +status: ready +labels: + - other +assignees: + - Ted +--- + +# Scaling + +## Description + + + +* [ ] Implement load balancing +* [ ] Add performance monitoring + +## Metadata + +- **Jira Issue**: TUT-391 +- **Created**: 02/Jan/25 3:18 PM +- **Reporter**: Ted + +---ISSUE--- + +--- +title: Database Optimization +status: ready +labels: + - enhancement +assignees: + - Ted +--- + +# Database Optimization + +## Description + +* [ ] Optimize database queries + +* [ ] Add database indexing + +* [ ] Implement connection pooling + +* [ ] Add query monitoring + +* [ ] Set up database maintenance procedures + +## Metadata + +- **Jira Issue**: TUT-390 +- **Created**: 02/Jan/25 3:18 PM +- **Reporter**: Ted + +---ISSUE--- + +--- +title: Security +status: ready +labels: + - enhancement +assignees: + - Ted +--- + +# Security + +## Description + +* [ ] Implement authentication system + +* [ ] Add authorization mechanisms + +* [ ] Set up CORS properly + +* [ ] Add request validation + +* [ ] Implement security headers + +## Metadata + +- **Jira Issue**: TUT-389 +- **Created**: 02/Jan/25 3:17 PM +- **Reporter**: Ted + +---ISSUE--- + +--- +title: Endpoint Implementation +status: ready +labels: + - enhancement +assignees: + - Ted +--- + +# Endpoint Implementation + +## Description + +* [ ] Complete all required API endpoints: + +* [ ] /initialize_session + +* [ ] /stream_tutor + +* [ ] /practice_problems + +* [ ] /grade_short_responses + +* [ ] /status + +* [ ] Add proper request validation + +* [ ] Implement rate limiting + +* [ ] Add API versioning + +## Metadata + +- **Jira Issue**: TUT-388 +- **Created**: 02/Jan/25 3:17 PM +- **Reporter**: Ted + +---ISSUE--- + +--- +title: Session Management +status: ready +labels: + - enhancement +assignees: + - Ted +--- + +# Session Management + +## Description + + + +## Metadata + +- **Jira Issue**: TUT-387 +- **Created**: 02/Jan/25 3:17 PM +- **Reporter**: Ted + +---ISSUE--- + +--- +title: Tool System +status: ready +labels: + - enhancement +assignees: + - Ted +--- + +# Tool System + +## Description + + + +## Metadata + +- **Jira Issue**: TUT-386 +- **Created**: 02/Jan/25 3:17 PM +- **Reporter**: Ted + +---ISSUE--- + +--- +title: LLM Integration +status: ready +labels: + - enhancement +assignees: + - Ted +--- + +# LLM Integration + +## Description + + + +## Metadata + +- **Jira Issue**: TUT-385 +- **Created**: 02/Jan/25 3:17 PM +- **Reporter**: Ted + +---ISSUE--- + +--- +title: Set up alerting for critical errors +status: ready +labels: + - task +assignees: + - Ted +--- + +# Set up alerting for critical errors + +## Description + + + +## Metadata + +- **Jira Issue**: TUT-384 +- **Created**: 02/Jan/25 3:15 PM +- **Reporter**: Ted + +---ISSUE--- + +--- +title: Database & Vector Store +status: ready +labels: + - task +assignees: + - Ted +--- + +# Database & Vector Store + +## Description + +* [ ] Create necessary schemas and tables for vector embeddings + +* [ ] Implement proper connection pooling and error handling + +* [ ] Set up database migrations system + +* [ ] Add database backup and restoration procedures + +## Metadata + +- **Jira Issue**: TUT-383 +- **Created**: 02/Jan/25 3:14 PM +- **Reporter**: Ted + +---ISSUE--- + +--- +title: Create documentation for all RDS API queries required for each page +status: ready +labels: + - task +assignees: + - Flynn Cruse +--- + +# Create documentation for all RDS API queries required for each page + +## Description + +Create in-depth technical documentation for each page : + + +* -Auth: Login/Sign Up & Teacher SignUp and Sign In- +* -Student HomePage- +* -Platform-Wide Heartbeet Signal- +* -Locker Page- +* -Calendar Page- +* -Tutor Conversations page- +* -OCR Sub-page- +* -Learning Assessments Page- +* -Chat History Page- +* -Games Page- +* -Custom SideBar page- +* Teacher Portal + +## Metadata + +- **Jira Issue**: TUT-382 +- **Created**: 02/Jan/25 3:12 PM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: RC1 RDS API Design and Development +status: ready +labels: + - other +assignees: + - Flynn Cruse +--- + +# RC1 RDS API Design and Development + +## Description + +Design RDS database Schema, API routes. +Implement database schema with migration code. +Implement api routes. +Integrate into frontend. + +## Metadata + +- **Jira Issue**: TUT-381 +- **Created**: 02/Jan/25 3:07 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Get a prototype to connect react with cognito +status: ready +labels: + - enhancement +assignees: + - Peter Apazidis +--- + +# Get a prototype to connect react with cognito + +## Description + +Get basic functionality for signing in and signing out of the app using cognito. We can start out with the code for Cletude for testing purposes. + +## Metadata + +- **Jira Issue**: TUT-380 +- **Created**: 02/Jan/25 1:46 PM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: 📈 RC2 Ventures +status: ready +labels: + - other +--- + +# 📈 RC2 Ventures + +## Description + +Further business development for the second release candidate. + +## Metadata + +- **Jira Issue**: TUT-379 +- **Created**: 30/Dec/24 4:18 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: ☁️ RC2 Infra +status: ready +labels: + - other +--- + +# ☁️ RC2 Infra + +## Description + +Development of the cloud services, particularly AWS and github, for the second release candidate. + +## Metadata + +- **Jira Issue**: TUT-378 +- **Created**: 30/Dec/24 3:36 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: ⚙️ RC2 Backend +status: ready +labels: + - other +--- + +# ⚙️ RC2 Backend + +## Description + +Development of the in-house services for the second release candidate. + +## Metadata + +- **Jira Issue**: TUT-377 +- **Created**: 30/Dec/24 3:31 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: 🎨 RC2 Frontend +status: ready +labels: + - other +--- + +# 🎨 RC2 Frontend + +## Description + +Development of the individual js pages, including game selection, for the second release candidate. + +## Metadata + +- **Jira Issue**: TUT-376 +- **Created**: 30/Dec/24 3:21 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: 🎮 RC2 Games +status: ready +labels: + - other + - Monier + - Usama +assignees: + - Bennett David +--- + +# 🎮 RC2 Games + +## Description + +Development of the individual games as well as games page, including all associated APIs, for the second release candidate. + +## Metadata + +- **Jira Issue**: TUT-375 +- **Created**: 30/Dec/24 3:16 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: G4: Wordle API Endpoint +status: ready +labels: + - enhancement +assignees: + - Ted +--- + +# G4: Wordle API Endpoint + +## Description + +API needs endpoint to support Wordle game. Outputs: chosen vocab word, word’s Definition, hint, confirmation of word relevance to chosen subject provided by model call (ideally 4o, deepseek v3, etc. something quick and cheap) + +* Take in optional parameters for word length & subject. +* Return a JSON object containing: +** The vocabulary word itself +** A definition +** A hint (e.g., a synonym, antonym, or short context sentence) + +## Metadata + +- **Jira Issue**: TUT-374 +- **Created**: 28/Dec/24 11:45 AM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: G4: Final Integration & Knowledge Transfer +status: ready +labels: + - task +--- + +# G4: Final Integration & Knowledge Transfer + +## Description + +Complete final delivery and knowledge transfer to team. + +*Technical Requirements:* + +* Finalize all game systems +* Complete documentation package +* Prepare knowledge transfer materials +* Final performance optimization +* Cross-platform testing completion + +*Integration Points:* + +* All teams for final handoff +* Business: Final approval +* AWS: Final deployment verification + +*Acceptance Criteria:* + +* All games fully functional and optimized +* Complete documentation delivered +* Successful knowledge transfer session +* All educational features verified +* Performance requirements met on all platforms + +## Metadata + +- **Jira Issue**: TUT-373 +- **Created**: 28/Dec/24 10:46 AM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: G4: Initial Review and Refinement +status: ready +labels: + - task + - Monier +assignees: + - Bennett David +--- + +# G4: Initial Review and Refinement + +## Description + +Complete review process for wordle game and implement approved refinements. + +*Technical Requirements:* + +* Prepare comprehensive game demonstration +* Document all features and functionalities +* Set up feedback tracking system +* Implement required adjustments + +*Integration Points:* + +* All teams for review process +* Business: Approval workflow +* Frontend: UI refinements +* Backend: Data management adjustments + +*Acceptance Criteria:* + +* Successful review meeting completed +* All feedback documented and addressed +* Payment milestone achieved +* Ready for subsequent game development + +## Metadata + +- **Jira Issue**: TUT-372 +- **Created**: 28/Dec/24 10:23 AM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: G3: Final Integration & Knowledge Transfer +status: ready +labels: + - task +assignees: + - Bennett David +--- + +# G3: Final Integration & Knowledge Transfer + +## Description + +Complete final delivery and knowledge transfer to team. + +*Technical Requirements:* + +* Finalize all game systems +* Complete documentation package +* Prepare knowledge transfer materials +* Final performance optimization +* Cross-platform testing completion + +*Integration Points:* + +* All teams for final handoff +* Business: Final approval +* AWS: Final deployment verification + +*Acceptance Criteria:* + +* All games fully functional and optimized +* Complete documentation delivered +* Successful knowledge transfer session +* All educational features verified +* Performance requirements met on all platforms + +## Metadata + +- **Jira Issue**: TUT-371 +- **Created**: 28/Dec/24 10:21 AM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: G3: Initial Review and Refinement +status: ready +labels: + - task + - Monier +assignees: + - Bennett David +--- + +# G3: Initial Review and Refinement + +## Description + +Complete review process for slitherio game and implement approved refinements. + +*Technical Requirements:* + +* Prepare comprehensive game demonstration +* Document all features and functionalities +* Set up feedback tracking system +* Implement required adjustments + +*Integration Points:* + +* All teams for review process +* Business: Approval workflow +* Frontend: UI refinements +* Backend: Data management adjustments + +*Acceptance Criteria:* + +* Successful review meeting completed +* All feedback documented and addressed +* Payment milestone achieved +* Ready for subsequent game development + +## Metadata + +- **Jira Issue**: TUT-370 +- **Created**: 28/Dec/24 10:18 AM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Learn Shadcn so that we can understand the frontend code +status: ready +labels: + - other +assignees: + - Peter Apazidis +--- + +# Learn Shadcn so that we can understand the frontend code + +## Description + +The react developers decided to use the Shadcn component library instead of MUI for coding out the frontend. In order to check their work, we need to have an understanding of how shadcn works. + +## Metadata + +- **Jira Issue**: TUT-369 +- **Created**: 19/Dec/24 5:45 PM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: Yasha-Add caching and indexing strategies for improved performance +status: ready +labels: + - enhancement +assignees: + - Ted +--- + +# Yasha-Add caching and indexing strategies for improved performance + +## Description + + + +## Metadata + +- **Jira Issue**: TUT-368 +- **Created**: 19/Dec/24 5:31 PM +- **Reporter**: Ted + +---ISSUE--- + +--- +title: Yasha-Add outcome measurement logic +status: ready +labels: + - enhancement +assignees: + - Ted +--- + +# Yasha-Add outcome measurement logic + +## Description + + + +## Metadata + +- **Jira Issue**: TUT-367 +- **Created**: 19/Dec/24 5:31 PM +- **Reporter**: Ted + +---ISSUE--- + +--- +title: Yasha-Implement initial RAG retrieval endpoints +status: ready +labels: + - enhancement +assignees: + - Ted +--- + +# Yasha-Implement initial RAG retrieval endpoints + +## Description + + + +## Metadata + +- **Jira Issue**: TUT-366 +- **Created**: 19/Dec/24 5:30 PM +- **Reporter**: Ted + +---ISSUE--- + +--- +title: Topic Document +status: ready +labels: + - task +assignees: + - Max Brie +--- + +# Topic Document + +## Description + +Lay out all topics for grades 6-12 In Us and Canada High School. + +## Metadata + +- **Jira Issue**: TUT-365 +- **Created**: 19/Dec/24 3:10 PM +- **Reporter**: Max Brie + +---ISSUE--- + +--- +title: G4: Wordle Implementation +status: ready +labels: + - task +assignees: + - Flynn Cruse +--- + +# G4: Wordle Implementation + +## Description + +Develop wordle game integrated with backend api incorporating feedback from previous game reviews. + +## Metadata + +- **Jira Issue**: TUT-364 +- **Created**: 19/Dec/24 3:51 AM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: G5: Jumper, Connections, Flight Sim, etc. +status: ready +labels: + - other +--- + +# G5: Jumper, Connections, Flight Sim, etc. + +## Description + + + +## Metadata + +- **Jira Issue**: TUT-363 +- **Created**: 19/Dec/24 3:50 AM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: 3rd Game Contractor Initial Meet +status: ready +labels: + - task +assignees: + - Bennett David +--- + +# 3rd Game Contractor Initial Meet + +## Description + + + +## Metadata + +- **Jira Issue**: TUT-362 +- **Created**: 19/Dec/24 3:49 AM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: 2nd Game Contractor Initial Meet +status: ready +labels: + - task +assignees: + - Bennett David +--- + +# 2nd Game Contractor Initial Meet + +## Description + + + +## Metadata + +- **Jira Issue**: TUT-361 +- **Created**: 19/Dec/24 3:49 AM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: G6: Candy Crush Implementation +status: ready +labels: + - task +--- + +# G6: Candy Crush Implementation + +## Description + +Develop candy game integrated with backend api incorporating feedback from previous game reviews. Crucial that the first level and power-up are built in a modular fashion so the game can be endlessly added to (especially new levels and power-up combos). + +## Metadata + +- **Jira Issue**: TUT-360 +- **Created**: 19/Dec/24 3:49 AM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: How the frontend should access most data +status: ready +labels: + - other +assignees: + - Peter Apazidis +--- + +# How the frontend should access most data + +## Description + +There is a lot of data needed on the frontend that can just be accessed from the database without having to do massaging/transforming of data and business logic. We need to figure out how we should send/retrieve this data without having to create an endpoint on the backend for each data set. + +## Metadata + +- **Jira Issue**: TUT-359 +- **Created**: 18/Dec/24 4:44 PM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: Gather Website Feedback +status: ready +labels: + - task +assignees: + - Max Brie +--- + +# Gather Website Feedback + +## Description + +Speak to outside people about website and gather feedback. Does it get the point across. + +## Metadata + +- **Jira Issue**: TUT-358 +- **Created**: 18/Dec/24 4:35 PM +- **Reporter**: Max Brie + +---ISSUE--- + +--- +title: Plug Ins for Framer +status: ready +labels: + - task +assignees: + - Max Brie +--- + +# Plug Ins for Framer + +## Description + +Last step of Framer is to implement Plug ins for scheduling and other tracking.. Don’t want form submission + +## Metadata + +- **Jira Issue**: TUT-357 +- **Created**: 18/Dec/24 4:09 PM +- **Reporter**: Max Brie + +---ISSUE--- + +--- +title: Deliver Art for Flynn +status: ready +labels: + - task +assignees: + - Max Brie +--- + +# Deliver Art for Flynn + +## Description + +Finalize designs with Artist deadline Dec 22nd. Deliver to Flynn and Ted + +## Metadata + +- **Jira Issue**: TUT-356 +- **Created**: 18/Dec/24 3:53 PM +- **Reporter**: Max Brie + +---ISSUE--- + +--- +title: Marketing Strategy +status: ready +labels: + - task +--- + +# Marketing Strategy + +## Description + +Begin layout of marketing materials. Doubt I will finish this all up this in a week but will identify all materials needed / texts and have them ready for launch. Uploaded to google drive. + +## Metadata + +- **Jira Issue**: TUT-355 +- **Created**: 18/Dec/24 3:52 PM +- **Reporter**: Max Brie + +---ISSUE--- + +--- +title: Investor presentation to team +status: ready +labels: + - task +assignees: + - Max Brie +--- + +# Investor presentation to team + +## Description + +Set up documents for team review of fundraise. Present target funds, strategy and fundraise total/timeline. + +Will Upload to Google Drive but also record a presentation (all welcome to attend) + +## Metadata + +- **Jira Issue**: TUT-354 +- **Created**: 18/Dec/24 3:51 PM +- **Reporter**: Max Brie + +---ISSUE--- + +--- +title: Avatar Asset Layering +status: ready +labels: + - other +assignees: + - Peter Apazidis +--- + +# Avatar Asset Layering + +## Description + +We need to understand a best approach for adding specific assets to a given character base. Capybara for example should be able to take on glasses, hat, and both! + +## Metadata + +- **Jira Issue**: TUT-353 +- **Created**: 11/Dec/24 7:02 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Perfect LaTeX +status: ready +labels: + - refactor +assignees: + - Flynn Cruse +--- + +# Perfect LaTeX + +## Description + +Build out layered latex parsing - using Groq as inference provider. + +Boolean response for whether or not it is valid latex - if no, THEN groq processes. + +## Metadata + +- **Jira Issue**: TUT-352 +- **Created**: 11/Dec/24 7:00 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Yasha-Improvement plan summarizing all enhancements +status: ready +labels: + - enhancement +assignees: + - Ted +--- + +# Yasha-Improvement plan summarizing all enhancements + +## Description + + + +## Metadata + +- **Jira Issue**: TUT-351 +- **Created**: 11/Dec/24 5:47 PM +- **Reporter**: Ted + +---ISSUE--- + +--- +title: Yasha-Security assessment report identifying vulnerabilities + addressing improvements +status: ready +labels: + - enhancement +assignees: + - Ted +--- + +# Yasha-Security assessment report identifying vulnerabilities + addressing improvements + +## Description + + + +## Metadata + +- **Jira Issue**: TUT-350 +- **Created**: 11/Dec/24 5:47 PM +- **Reporter**: Ted + +---ISSUE--- + +--- +title: Yasha-API optimization recommendations w/ implemented quick fixes +status: ready +labels: + - enhancement +assignees: + - Ted +--- + +# Yasha-API optimization recommendations w/ implemented quick fixes + +## Description + + + +## Metadata + +- **Jira Issue**: TUT-349 +- **Created**: 11/Dec/24 5:47 PM +- **Reporter**: Ted + +---ISSUE--- + +--- +title: Yasha-Technical proposals for tools / topic selection interface +status: ready +labels: + - enhancement +assignees: + - Ted +--- + +# Yasha-Technical proposals for tools / topic selection interface + +## Description + + + +## Metadata + +- **Jira Issue**: TUT-348 +- **Created**: 11/Dec/24 5:47 PM +- **Reporter**: Ted + +---ISSUE--- + +--- +title: Arose-Add Trace IDs or Error IDs to Errors +status: ready +labels: + - enhancement +assignees: + - Ted +--- + +# Arose-Add Trace IDs or Error IDs to Errors + +## Description + + + +## Metadata + +- **Jira Issue**: TUT-346 +- **Created**: 11/Dec/24 5:44 PM +- **Reporter**: Ted + +---ISSUE--- + +--- +title: Arose-Implement AWS CloudWatch Logging +status: ready +labels: + - enhancement +assignees: + - Ted +--- + +# Arose-Implement AWS CloudWatch Logging + +## Description + + + +## Metadata + +- **Jira Issue**: TUT-345 +- **Created**: 11/Dec/24 5:44 PM +- **Reporter**: Ted + +---ISSUE--- + +--- +title: Arose-Improve Code Coverage +status: ready +labels: + - enhancement +assignees: + - Ted +--- + +# Arose-Improve Code Coverage + +## Description + + + +## Metadata + +- **Jira Issue**: TUT-344 +- **Created**: 11/Dec/24 5:44 PM +- **Reporter**: Ted + +---ISSUE--- + +--- +title: Simplify previous frontend +status: ready +labels: + - refactor +assignees: + - Peter Apazidis +--- + +# Simplify previous frontend + +## Description + +Remove and simplify code in the previous frontend so that the contracted developers can easily pull the code they need to work on the redesigned front end + +## Metadata + +- **Jira Issue**: TUT-342 +- **Created**: 11/Dec/24 5:11 PM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: Finish Onboard of React team +status: ready +labels: + - task +assignees: + - Max Brie +--- + +# Finish Onboard of React team + +## Description + +Contract creation for all of our React team and ensure completion. + +## Metadata + +- **Jira Issue**: TUT-339 +- **Created**: 11/Dec/24 12:27 PM +- **Reporter**: Max Brie + +---ISSUE--- + +--- +title: React Team Documentation +status: ready +labels: + - task +assignees: + - Peter Apazidis +--- + +# React Team Documentation + +## Description + +Get all documentation needed for React team. Will need to check in with Flynn for access to proper repos. + +## Metadata + +- **Jira Issue**: TUT-338 +- **Created**: 11/Dec/24 12:27 PM +- **Reporter**: Max Brie + +---ISSUE--- + +--- +title: Completion of Figma +status: ready +labels: + - task +assignees: + - Max Brie +--- + +# Completion of Figma + +## Description + +Complete 100% of figma design from Tien. + +## Metadata + +- **Jira Issue**: TUT-337 +- **Created**: 11/Dec/24 12:26 PM +- **Reporter**: Max Brie + +---ISSUE--- + +--- +title: Make document identifying problems with current app code +status: ready +labels: + - other +assignees: + - Peter Apazidis +--- + +# Make document identifying problems with current app code + +## Description + +We want to identify the current problems with the frontend app so that we can come to a consensus as to why we would want to have the developers start the project mostly from scratch instead of trying to continue off of what we already have. Here is the link: [https://docs.google.com/document/d/1UEHfZVfP8Dya_BKoqXuA0zEmuHedt_u1pFy7typthWg/edit?usp=sharing|https://docs.google.com/document/d/1UEHfZVfP8Dya_BKoqXuA0zEmuHedt_u1pFy7typthWg/edit?usp=sharing|smart-link] + +## Metadata + +- **Jira Issue**: TUT-336 +- **Created**: 10/Dec/24 3:31 PM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: M5: Production Environment Setup and Documentation - AWS +status: ready +labels: + - task +assignees: + - Flynn Cruse +--- + +# M5: Production Environment Setup and Documentation - AWS + +## Description + +*Objective:* Replicate the production environment with all security measures and provide essential documentation. + +h4. *Tasks:* + +# *Production Environment Setup (3.5 Hours)* +#* *Infrastructure Deployment:* +#** Replicate staging configurations using existing templates. +#* *Security Enhancements:* +#** Implement stricter security group rules and NACLs. +#** Ensure IAM roles and policies are correctly applied. +#* *Testing:* +#** Perform final testing to ensure production readiness. +# *Documentation and Knowledge Transfer (1.5 Hours)* +#* *Architecture Diagrams:* +#** Update diagrams to reflect the final infrastructure. +#* *Runbooks:* +#** Document deployment and rollback procedures. +#* *Guides:* +#** Provide essential guides for team members. + +## Metadata + +- **Jira Issue**: TUT-335 +- **Created**: 05/Dec/24 10:14 AM +- **Reporter**: Drew + +---ISSUE--- + +--- +title: M4: Operations, Automation, and Testing - AWS +status: ready +labels: + - task +assignees: + - Flynn Cruse +--- + +# M4: Operations, Automation, and Testing - AWS + +## Description + +*Objective:* Automate deployments, configure autoscaling, set up the database schema, and perform essential testing. + +h4. *Tasks:* + +# *CI/CD Pipeline Setup with IAM Roles (4 Hours)* +#* *GitHub Actions Workflows:* +#** Set up workflows to build and push Docker images to ECR. +#** Automate ECS service updates with new task definitions. +#* *IAM Roles for CI/CD:* +#** Configure IAM roles and policies for the CI/CD pipelines to interact with AWS services securely. +# *Autoscaling Configuration (1 Hour)* +#* *Scaling Policies:* +#** Configure autoscaling based on CPU/memory usage. +#** Set appropriate minimum and maximum task counts. +#* *Testing:* +#** Simulate load to test scaling policies. +# *Database Schema Setup (3 Hours)* +#* *Schema Definition:* +#** Design tables: users, conversations, messages, etc. +#** Include indexes and constraints. +#* *Cognito Mapping:* +#** Map Cognito {{sub}} to {{user_id}} in the users table. +#* *Data Seeding:* +#** Seed the staging database with test data. +# *Essential Testing and Validation (3 Hours)* +#* *Integration Testing:* +#** Conduct end-to-end testing in the staging environment. +#* *Security Testing:* +#** Perform basic vulnerability scanning. +#* *Compliance Checks:* +#** Ensure configurations meet compliance requirements. + +## Metadata + +- **Jira Issue**: TUT-334 +- **Created**: 05/Dec/24 10:13 AM +- **Reporter**: Drew + +---ISSUE--- + +--- +title: M3: Application Services Deployment - AWS +status: ready +labels: + - task +assignees: + - Flynn Cruse +--- + +# M3: Application Services Deployment - AWS + +## Description + +*Objective:* Secure sensitive information, set up authentication with Cognito, deploy the frontend service, and configure essential monitoring. + +h4. *Tasks:* + +# *AWS Secrets Manager Configuration (2 Hours)* +#* *Secrets Creation:* +#** Store database credentials and API keys. +#* *Access Control:* +#** Update IAM roles to grant ECS tasks access to the secrets. +#* *Integration:* +#** Modify ECS task definitions or application code to retrieve secrets at runtime. +# *Cognito Integration (5 Hours)* +#* *User Pool Setup:* +#** Create a Cognito User Pool for user authentication. +#* *Identity Pool Setup (if needed):* +#** Set up a Cognito Identity Pool for temporary AWS credentials. +#* *Backend Integration:* +#** Update backend services to validate JWT tokens issued by Cognito. +#* *Testing:* +#** Perform user authentication flow tests. +# *Frontend ECS Deployment with ALB (5 Hours)* +#* *ECS Cluster:* +#** Create a cluster for the frontend service. +#* *Task Definition:* +#** Define tasks with environment variables, network settings, and necessary IAM roles. +#* *Deployment:* +#** Deploy the frontend application to ECS. +#* *ALB Configuration:* +#** Update the ALB to route traffic to the frontend service. +#* *Testing:* +#** Verify public access to the frontend via the ALB. +# *Basic Monitoring Setup (1 Hour)* +#* *CloudWatch Logs:* +#** Configure ECS tasks to send logs to CloudWatch. +#* *Metrics and Alarms:* +#** Set up essential CloudWatch alarms for key metrics. + +## Metadata + +- **Jira Issue**: TUT-333 +- **Created**: 05/Dec/24 10:12 AM +- **Reporter**: Drew + +---ISSUE--- + +--- +title: M2: Core Services Setup - AWS +status: ready +labels: + - task +assignees: + - Flynn Cruse +--- + +# M2: Core Services Setup - AWS + +## Description + +*Objective:* Deploy core backend services and network components essential for the application, with necessary IAM configurations. + +h4. *Tasks:* + +# *NAT Gateway and Internet Gateway Setup (2 Hours)* +#* *Internet Gateway:* +#** Create and attach to the VPC. +#* *NAT Gateway:* +#** Deploy in a public subnet. +#** Allocate an Elastic IP. +#* *Route Tables:* +#** Update private subnet routes to direct Internet-bound traffic through the NAT Gateway. +#* *Testing:* +#** Verify that resources in private subnets can access external APIs. +# *Elastic Container Registry (ECR) Setup (2 Hours)* +#* *Repositories:* +#** Create ECR repositories for the backend and frontend. +#* *Permissions:* +#** Configure IAM policies for ECS tasks and CI/CD pipelines to access ECR. +#* *Image Management:* +#** Push initial Docker images to ECR. +# *RDS Configuration with Security (5 Hours)* +#* *RDS Instance:* +#** Deploy a PostgreSQL instance in private subnets. +#* *Security:* +#** Enable encryption at rest. +#** Configure security groups to restrict access to ECS tasks. +#* *Monitoring and Backups:* +#** Set up automated backups. +#* *Testing:* +#** Verify connectivity from ECS tasks to the RDS instance. +# *ECS Prompt Service Deployment with ALB (5 Hours)* +#* *ECS Cluster:* +#** Create a cluster for backend services. +#* *Task Definition:* +#** Define tasks with environment variables, resource limits, and appropriate IAM roles. +#* *Application Load Balancer (ALB):* +#** Set up a single ALB for both frontend and backend services. +#** Configure listeners and routing rules using host-based or path-based routing. +#* *Deployment:* +#** Deploy the Prompt Service to ECS. +#* *Basic Monitoring:* +#** Enable ALB access logs. + +## Metadata + +- **Jira Issue**: TUT-332 +- **Created**: 05/Dec/24 10:11 AM +- **Reporter**: Drew + +---ISSUE--- + +--- +title: M1: Network Foundation and Security Configuration - AWS Implementation +status: ready +labels: + - task +assignees: + - Flynn Cruse +--- + +# M1: Network Foundation and Security Configuration - AWS Implementation + +## Description + +*Objective:* Establish a secure network foundation for both staging and production environments, including necessary IAM roles, policies, and security groups. + +h4. *Tasks:* + +# *VPC and Subnet Setup (5 Hours)* +#* *Create VPC:* +#** Set up a VPC with CIDR block {{10.0.0.0/16}}. (example) +#* *Configure Subnets:* +#** *Public Subnets:* For NAT Gateway, ALB, and Internet Gateway. +#** *Private Subnets:* For ECS tasks, RDS, and internal services. +#* *Route Tables:* +#** Associate public subnets with the Internet Gateway. +#** Associate private subnets with the NAT Gateway. +# *IAM Roles and Policies Setup (3 Hours)* +#* *ECS Task Execution Role:* +#** Allows ECS tasks to pull images from ECR and send logs to CloudWatch. +#* *ECS Task Role:* +#** Allows applications running in ECS tasks to access AWS services (e.g., Secrets Manager, RDS). +#* *CI/CD Pipeline Role:* +#** Allows CI/CD pipelines to interact with AWS services (e.g., ECR, ECS). +#* *Define Policies:* +#** Create policies adhering to the principle of least privilege. +# *Security Groups and NACLs Configuration (3 Hours)* +#* *Security Groups:* +#** Define inbound and outbound rules for: +#*** *ECS Tasks:* Allow necessary traffic (e.g., application ports). +#*** *ALB:* Allow inbound HTTP/HTTPS traffic. +#*** *RDS:* Restrict access to ECS tasks only. +#* *Network ACLs (Optional for Time Constraints):* +#** Set up basic NACLs for additional subnet security if time permits. +# *DNS Management (1 Hour)* +#* *Route 53 Configuration:* +#** Set up hosted zones. +#** Configure DNS records for the ALB and other endpoints. + +## Metadata + +- **Jira Issue**: TUT-331 +- **Created**: 05/Dec/24 10:10 AM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Onboard new AWS Infrastructure Contractor +status: ready +labels: + - task +assignees: + - Flynn Cruse +--- + +# Onboard new AWS Infrastructure Contractor + +## Description + +[https://docs.google.com/document/d/1cWIa6D-TEYXZZHOs-2aRcleXIH8I6dsPoDihfeu_W2c/edit?usp=sharing|https://docs.google.com/document/d/1cWIa6D-TEYXZZHOs-2aRcleXIH8I6dsPoDihfeu_W2c/edit?usp=sharing|smart-link] +[https://drive.google.com/file/d/1NDI8E1SLsTfn_68esyEbFvYTLgfAdMEB/view?usp=drive_link|https://drive.google.com/file/d/1NDI8E1SLsTfn_68esyEbFvYTLgfAdMEB/view?usp=drive_link|smart-link] - open in draw.io +Meet with potential AWS Infrastructure Experts. Describe & disclose the current AWS Infrastructure plan, receive feedback and improve architecture implementation plan. + +Request time estimations for each phase of the project; break into milestones and track through fiverr & Jira. + +## Metadata + +- **Jira Issue**: TUT-330 +- **Created**: 05/Dec/24 10:09 AM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Unity + React +status: ready +labels: + - other +--- + +# Unity + React + +## Description + +For Tower Defense - learn how to best pull and use the contents of the unity repo into our app dynamically. + +## Metadata + +- **Jira Issue**: TUT-329 +- **Created**: 04/Dec/24 7:02 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Arose-Analyze Test Coverage and Code Quality Results +status: ready +labels: + - other +assignees: + - Ted +--- + +# Arose-Analyze Test Coverage and Code Quality Results + +## Description + +{{Review SonarCloud quality metrics and identify key areas: }} +{{o Code coverage gaps }} +{{o Code smells }} +{{o Maintainability issues }} +{{o Security hotspots }} +{{• Analyze test execution results }} +{{• Document findings into three categories: }} +{{o Critical issues (must fix) }} +{{o Important improvements }} +{{o Nice-to-have enhancements }} +{{• Create prioritized list of next testing tasks }} +{{• Create recommendations for code improvements }} +{{• Estimate complexity of identified issues }} +{{• Estimated time: 2-3 hours }} + + +## Metadata + +- **Jira Issue**: TUT-328 +- **Created**: 04/Dec/24 4:31 PM +- **Reporter**: Ted + +---ISSUE--- + +--- +title: Arose-Add SonarCloud to GitHub Actions +status: ready +labels: + - other +assignees: + - Ted +--- + +# Arose-Add SonarCloud to GitHub Actions + +## Description + +{{Create SonarCloud workflow }} +{{• Configure Poetry environment for analysis }} +{{• Set up PR decoration }} +{{• Add quality gate conditions }} +{{• Estimated time: 2 hours}} + +## Metadata + +- **Jira Issue**: TUT-327 +- **Created**: 04/Dec/24 4:31 PM +- **Reporter**: Ted + +---ISSUE--- + +--- +title: Arose-Configure SonarCloud Analysis +status: ready +labels: + - other +assignees: + - Ted +--- + +# Arose-Configure SonarCloud Analysis + +## Description + +{{Add sonar-project.properties file }} +{{• Configure Poetry-specific exclusions }} +{{• Set up test coverage import }} +{{• Configure Python version settings }} +{{• Estimated time: 1-2 hours}} + +## Metadata + +- **Jira Issue**: TUT-326 +- **Created**: 04/Dec/24 4:30 PM +- **Reporter**: Ted + +---ISSUE--- + +--- +title: Arose-Set Up SonarCloud Project +status: ready +labels: + - other +assignees: + - Ted +--- + +# Arose-Set Up SonarCloud Project + +## Description + +{{Create SonarCloud organization }} +{{• Configure Python project with Poetry support }} +{{• Set up project tokens in Codespace secrets }} +{{• Configure initial quality profiles }} +{{• Estimated time: 1-2 hours}} + + +## Metadata + +- **Jira Issue**: TUT-325 +- **Created**: 04/Dec/24 4:30 PM +- **Reporter**: Ted + +---ISSUE--- + +--- +title: Arose-Add Coverage Configuration +status: ready +labels: + - other +assignees: + - Ted +--- + +# Arose-Add Coverage Configuration + +## Description + +{{Add coverage configuration to pyproject.toml }} +{{• Configure coverage reporting in GitHub Actions }} +{{• Set up coverage thresholds }} +{{• Configure coverage output for SonarCloud }} +{{• Estimated time: 1-2 hours}} + +## Metadata + +- **Jira Issue**: TUT-324 +- **Created**: 04/Dec/24 4:29 PM +- **Reporter**: Ted + +---ISSUE--- + +--- +title: Arose-Configure GitHub Actions for Poetry +status: ready +labels: + - other +assignees: + - Ted +--- + +# Arose-Configure GitHub Actions for Poetry + +## Description + +{{Create Poetry-based test workflow }} + +* {{Add Poetry cache configuration }} +* {{Configure pytest running in CI }} +* {{Set up test artifacts collection}} + +* {{Estimated time: 1-2 hours}} + + + + +## Metadata + +- **Jira Issue**: TUT-323 +- **Created**: 04/Dec/24 4:28 PM +- **Reporter**: Ted + +---ISSUE--- + +--- +title: Arose-Set Up Async Test Infrastructure +status: ready +labels: + - other +assignees: + - Ted +--- + +# Arose-Set Up Async Test Infrastructure + +## Description + +{{Add pytest-asyncio configuration to pyproject.toml }} +{{• Create async test utilities for FastAPI }} +{{• Set up AsyncClient test base class }} +{{• Add async database session fixtures }} +{{• Estimated time: 2 hours}} + + +## Metadata + +- **Jira Issue**: TUT-322 +- **Created**: 04/Dec/24 4:28 PM +- **Reporter**: Ted + +---ISSUE--- + +--- +title: Arose-Set up Test Directory Structure +status: ready +labels: + - other +assignees: + - Ted +--- + +# Arose-Set up Test Directory Structure + +## Description + +{{Create tests/ directory matching application structure }} +{{• Set up conftest.py with Codespace-aware configurations }} +{{• Create test config loader for default/config.yaml }} +{{• Add environment variable handling for tests }} +{{• Estimated time: 2 hours}} + + +## Metadata + +- **Jira Issue**: TUT-321 +- **Created**: 04/Dec/24 4:28 PM +- **Reporter**: Ted + +---ISSUE--- + +--- +title: Arose-Configure Test Environment for Codespaces +status: ready +labels: + - other +assignees: + - Ted +--- + +# Arose-Configure Test Environment for Codespaces + +## Description + +{{Add test dependencies to pyproject.toml using Poetry }} +{{• Set up test environment variables in Codespace secrets }} +{{• Configure pytest for Codespace environment }} +{{• Update devcontainer.json if needed for test dependencies }} +{{• Estimated time: 1-2 hours}} + +## Metadata + +- **Jira Issue**: TUT-320 +- **Created**: 04/Dec/24 4:28 PM +- **Reporter**: Ted + +---ISSUE--- + +--- +title: Avatar base creation complete +status: ready +labels: + - task +--- + +# Avatar base creation complete + +## Description + +Get Arslan first draft of avatar design back and give green light for accessory build out + +## Metadata + +- **Jira Issue**: TUT-315 +- **Created**: 04/Dec/24 3:52 PM +- **Reporter**: Max Brie + +---ISSUE--- + +--- +title: 80% Of Design complete +status: ready +labels: + - task +--- + +# 80% Of Design complete + +## Description + +Tien will have main pages complete, log in, sign up, home page, main tutor interface, learning assessment, Calendar, review and game page…. Last few pages will be complete in next sprint. + +## Metadata + +- **Jira Issue**: TUT-314 +- **Created**: 04/Dec/24 3:51 PM +- **Reporter**: Max Brie + +---ISSUE--- + +--- +title: Create Base for Class Calendar Feature +status: ready +labels: + - task +assignees: + - Flynn Cruse +--- + +# Create Base for Class Calendar Feature + +## Description + +Create a first-draft of the Class-Calendar feature. +Will be integrated to RDS in the future with class-code synchronization. For now, just the Calendar page UI, and basic functionalities being built-out. + +## Metadata + +- **Jira Issue**: TUT-313 +- **Created**: 03/Dec/24 10:51 AM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Initial Tasking Document Generation +status: ready +labels: + - other +--- + +# Initial Tasking Document Generation + +## Description + + + +## Metadata + +- **Jira Issue**: TUT-312 +- **Created**: 01/Dec/24 2:37 PM +- **Reporter**: Ted + +---ISSUE--- + +--- +title: 1st Game Contractor Spin-Up Meet +status: ready +labels: + - task + - Bilal +assignees: + - Bennett David +--- + +# 1st Game Contractor Spin-Up Meet + +## Description + +Meet with Bilal to level set expectations for the first game. Should introduce him to the Wednesday/Thursday timeline, the #games channel in slack, and an appropriate repo in our github org. + +## Metadata + +- **Jira Issue**: TUT-311 +- **Created**: 01/Dec/24 1:38 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Internal Completion of functionalities document for Tien +status: ready +labels: + - enhancement +--- + +# Internal Completion of functionalities document for Tien + +## Description + +For Max and Peter to complete: add all functionality desired for the frontend app + +## Metadata + +- **Jira Issue**: TUT-310 +- **Created**: 30/Nov/24 11:36 AM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: Overall completion of user flow +status: ready +labels: + - enhancement +--- + +# Overall completion of user flow + +## Description + + + +## Metadata + +- **Jira Issue**: TUT-308 +- **Created**: 30/Nov/24 11:34 AM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: Codebase Review +status: ready +labels: + - enhancement +--- + +# Codebase Review + +## Description + +* Review the *Technical Overview of the Cletude Prompt Service*. +* Focus on core architecture, key abstractions, and major subsystems. +* Begin reviewing the existing code in the repository, paying special attention to the LLM integration and vector search system. + +## Metadata + +- **Jira Issue**: TUT-307 +- **Created**: 30/Nov/24 11:20 AM +- **Reporter**: Ted + +---ISSUE--- + +--- +title: UI: design the signup page +status: ready +labels: + - enhancement +--- + +# UI: design the signup page + +## Description + +The signup page is designed, has all the functionality set out in our specifications document, and is approved by the team. + +## Metadata + +- **Jira Issue**: TUT-306 +- **Created**: 30/Nov/24 10:06 AM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: UI: design the login page +status: ready +labels: + - enhancement +--- + +# UI: design the login page + +## Description + +The Login page is designed, has all the functionality set out in our specifications document, and is approved by the team. + +## Metadata + +- **Jira Issue**: TUT-305 +- **Created**: 30/Nov/24 10:05 AM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: G2: Final Integration & Knowledge Transfer +status: ready +labels: + - task +--- + +# G2: Final Integration & Knowledge Transfer + +## Description + +Complete final delivery and knowledge transfer to team. + +*Technical Requirements:* + +* Finalize all game systems +* Complete documentation package +* Prepare knowledge transfer materials +* Final performance optimization +* Cross-platform testing completion + +*Integration Points:* + +* All teams for final handoff +* Business: Final approval +* AWS: Final deployment verification + +*Acceptance Criteria:* + +* All games fully functional and optimized +* Complete documentation delivered +* Successful knowledge transfer session +* All educational features verified +* Performance requirements met on all platforms + +## Metadata + +- **Jira Issue**: TUT-304 +- **Created**: 29/Nov/24 6:38 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: G3: Slitherio Implementation +status: ready +labels: + - task + - Usama +assignees: + - Flynn Cruse +--- + +# G3: Slitherio Implementation + +## Description + +Develop second contracted game incorporating feedback from first contracted game review. + +## Metadata + +- **Jira Issue**: TUT-303 +- **Created**: 29/Nov/24 6:37 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: G2: Initial Review and Refinement +status: ready +labels: + - task + - Monier +assignees: + - Bennett David +--- + +# G2: Initial Review and Refinement + +## Description + +Complete review process for first game and implement approved refinements. + +*Technical Requirements:* + +* Prepare comprehensive game demonstration +* Document all features and functionalities +* Set up feedback tracking system +* Implement required adjustments + +*Integration Points:* + +* All teams for review process +* Business: Approval workflow +* Frontend: UI refinements +* Backend: Data management adjustments + +*Acceptance Criteria:* + +* Successful review meeting completed +* All feedback documented and addressed +* Payment milestone achieved +* Ready for subsequent game development + +## Metadata + +- **Jira Issue**: TUT-302 +- **Created**: 29/Nov/24 6:31 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: G2: Tower Defense Implementation +status: ready +labels: + - task + - Usama +assignees: + - Flynn Cruse +--- + +# G2: Tower Defense Implementation + +## Description + +Develop initial tower defense game with complete educational integration and gameplay mechanics. + +*Technical Requirements:* + +* Implement starting resource system (100 coins per player) +* Adapt existing defense system - hoping to only minimally add to turrets +* Implement wave-based enemy system with increasing difficulty +* Expecting to not necessarily establish a tiered question system just yet +* Add random question prompts during waves (20, 50, or 100 coins) +* Implement round speed-up functionality (max 1 minute per round) +* Ensure performance optimization for low-end computers + +*Future Integration Points:* + +* Frontend: React/Next.js component integration +* Backend: Question system API integration +* AWS: Performance monitoring +* Art: Defense item and enemy assets + +*Acceptance Criteria:* + +* Game runs smoothly on low-end devices +* All defense items function with correct pricing +* Question system operates with specified reward tiers +* Round timing meets requirements +* Complete export functionality for game data + +## Metadata + +- **Jira Issue**: TUT-301 +- **Created**: 29/Nov/24 6:31 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: RC1 Art Assets +status: ready +labels: + - other + - Araslan +assignees: + - Max Brie +--- + +# RC1 Art Assets + +## Description + +Focusing on the following for 1st release candidate - will use largely L0 issues. Planning MB to ticket this one out. + +* Character design (Koala and Capybara) +* Asset creation +* UI visual elements +* Animation system +* Asset optimization +* Style guide implementation + +## Metadata + +- **Jira Issue**: TUT-299 +- **Created**: 29/Nov/24 6:26 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: RC1 Game Development +status: ready +labels: + - other + - Bilal + - Usama +assignees: + - Bennett David +--- + +# RC1 Game Development + +## Description + +Focusing on the following for 1st release candidate - will use largely L0 issues. Planning BD and FC to ticket this one out. + +* Tower defense game development +* Educational integration +* Game mechanics implementation +* Level design +* Performance optimization +* Data management + +## Metadata + +- **Jira Issue**: TUT-298 +- **Created**: 29/Nov/24 6:23 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: RC1 AWS Infrastructure +status: ready +labels: + - other + - Amit +assignees: + - Flynn Cruse +--- + +# RC1 AWS Infrastructure + +## Description + +Focusing on the following for 1st release candidate - will use largely L0 issues. Planning FC and DH to ticket this one out. + +* Cloud infrastructure setup +* Deployment pipelines +* Security configuration +* Monitoring implementation +* Database hosting +* Performance optimization + +## Metadata + +- **Jira Issue**: TUT-297 +- **Created**: 29/Nov/24 6:20 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: RC1 Backend Development +status: ready +labels: + - other + - Arose + - Yashas +assignees: + - Ted +--- + +# RC1 Backend Development + +## Description + +Focusing on the following for 1st release candidate - will use largely L0 issues. Planning TP and DH to ticket this one out. + +* FastAPI implementation +* Database management +* API development +* Security implementation +* Performance optimization +* Testing infrastructure + +## Metadata + +- **Jira Issue**: TUT-296 +- **Created**: 29/Nov/24 6:16 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: RC1 Frontend Development +status: ready +labels: + - other + - Tien +assignees: + - Peter Apazidis +--- + +# RC1 Frontend Development + +## Description + +Focusing on the following for 1st release candidate - will use largely L0 issues. Planning PA and MB to ticket this one out. + +* Next.js/React implementation +* User interface development +* Component architecture +* State management +* Performance optimization +* Accessibility implementation + +## Metadata + +- **Jira Issue**: TUT-295 +- **Created**: 29/Nov/24 6:07 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Guardian Portal Review +status: ready +labels: + - task +--- + +# Guardian Portal Review + +## Description + +* Perhaps add dates of conversations for ‘helicopter’ parents… +* Feedback here could go directly into the platform to guide tutor’s interactions: +** ‘My kid needs help with (insert subject) fractions they don’t get it.' +** ‘My kid loves (insert _HOBBY)_ football!’ + +## Metadata + +- **Jira Issue**: TUT-294 +- **Created**: 22/Nov/24 12:03 AM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: G1: Space Game Refinements - Advisor Review +status: ready +labels: + - task +assignees: + - Flynn Cruse +--- + +# G1: Space Game Refinements - Advisor Review + +## Description + +Crashed on boss spawn because player was enthusiastic and fired 3 lasers quickly; boss got hit 3 times near-immediately, which occurred at approximately the same time the player got hit by a boss attack. + +We saw the same question occur:in the learning assessment and game. We might have seen the same question twice in the game too. Perhaps pass a history of questions seen before and make it prompt to generate original questions about the subject. + + +GameOverScene: + +* BUG: Last life lost just after the user hit a power up. Caused the question to overlay onto the gameOverScene - freezing the UI until refresh of page. If game ends, the question scene should not be overlayed, only the Game Over Scene should show. +* Should focus more on the questions, less on the score. +* Should be able to learn more about questions you got wrong… +** * Add a ‘review with tutor’ feature which combines ‘all the questions, answers, and whether you were wrong or not’ into an initial prompt in the chat page for the user to be tutored. + +## Metadata + +- **Jira Issue**: TUT-293 +- **Created**: 22/Nov/24 12:01 AM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Learning Assessment: Review +status: ready +labels: + - task +--- + +# Learning Assessment: Review + +## Description + +* Thought question types where check boxes at first - make them more obviously bullets +* difficulty setting needs attention: perhaps ‘easy, medium, hard’ rather than the slider going to ‘expert’ talked a bit about the psychology here… +* Results should be a page on the site rather than a downloadable csv. +* disable/enable the timer. +** Implement the timer feature… +* Disable/enable hints based on user familiarity with the subject +* Text was too small for Mary; we should consider bumping up the text size and or implementing the settings page with dynamic font size for users to adjust themselves… +* Liked the overall look, very clean! + +## Metadata + +- **Jira Issue**: TUT-292 +- **Created**: 21/Nov/24 11:55 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Tutorial for Cletude +status: ready +labels: + - task +--- + +# Tutorial for Cletude + +## Description + +Make some kind of User-Guide video/brochure/guide which explains how to use the product/where everything is within the platform. + +## Metadata + +- **Jira Issue**: TUT-291 +- **Created**: 21/Nov/24 11:51 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Math/Calculator/Symbol Input Interface - Chat Page +status: ready +labels: + - task +--- + +# Math/Calculator/Symbol Input Interface - Chat Page + +## Description + +Give users the ability to pop-up an on-screen mathematic notation keyboard. + +## Metadata + +- **Jira Issue**: TUT-290 +- **Created**: 21/Nov/24 11:48 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: OCR Improvements - Chat Page +status: ready +labels: + - task +assignees: + - Flynn Cruse +--- + +# OCR Improvements - Chat Page + +## Description + +When we demo’d, we were mid-way through a conversation and attempted to do the OCR. It did not properly activate (the lines did not appear, and I don’t think the status’ did either, which has been an indication in the past that it is not working) so we refreshed the page. This lost conversation context but then we were able to scan. + +The OCR feature needs TLC in general +Sensitivity could use tuning + + +## Metadata + +- **Jira Issue**: TUT-289 +- **Created**: 21/Nov/24 11:46 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Chat Page: Review +status: ready +labels: + - task +--- + +# Chat Page: Review + +## Description + +* On Chapter select: initial prompt/feedback to the user should happen. At least tell them what chapter they clicked. +* Voice mode should just read the next response that happens, rather than the current chat as well. +* When you click the microphone to transcribe it should make a little ‘click’ sound to indicate it is recording. +* When you click the microphone to stop transcription it should make a little ‘click’ sound to indicate it is stopped. +* When you press enter after clicking the microphone to send the input, it should stop recording. +* Perhaps also add a silence check to the microphone to stop it recording… +* Change the font in the user chat bubble to be white. + +## Metadata + +- **Jira Issue**: TUT-288 +- **Created**: 21/Nov/24 11:41 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Textbook-Selection Review +status: ready +labels: + - task +--- + +# Textbook-Selection Review + +## Description + +Potentially remove next button and put all possible textbooks on one screen. + +## Metadata + +- **Jira Issue**: TUT-287 +- **Created**: 21/Nov/24 11:37 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Tutor Select Revision +status: ready +labels: + - task +--- + +# Tutor Select Revision + +## Description + +Double click Tutor rather than (perhaps as well as) next button. + +People read left to right so it felt unnatural to go back to the next on the left + +## Metadata + +- **Jira Issue**: TUT-286 +- **Created**: 21/Nov/24 11:36 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Addressing Advisor Review Items +status: ready +labels: + - other +--- + +# Addressing Advisor Review Items + +## Description + +Once all the tickets in this epic are addressed, we will have satisfied the feedback that we received from the demo which Max, Ted, Peter, and Flynn gave to Vincent, Mary and Ying. + +## Metadata + +- **Jira Issue**: TUT-285 +- **Created**: 21/Nov/24 11:34 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Tutor selection cards not styled correctly +status: ready +labels: + - bug +assignees: + - Peter Apazidis +--- + +# Tutor selection cards not styled correctly + +## Description + +when npm run build is used for the app, the tutor selection cards are not styled correctly. There is an outline that shouldnt be there. This is most likely because tailwind is overlapping with MUI styles. Tailwind code needs to be converted to MUI. + +## Metadata + +- **Jira Issue**: TUT-284 +- **Created**: 21/Nov/24 12:27 PM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: G1: Space Game Refinements / Fixes with new Query method +status: ready +labels: + - task +assignees: + - Flynn Cruse +--- + +# G1: Space Game Refinements / Fixes with new Query method + +## Description + +* The game’s functionality broke with the new backend query mechanism. Update it to pass a session-id so that it can generate questions. +** Subject selection scene +** gameplay scene +** Main Menu Scene - could detect if a session is initialized and initialize one if not. +* Update gameOver scene to receive user responses. Seems broken right now. +* Add instructions graphic to main menu of game. +* Increase the chance of laser spawn since it is the interactive powerup. + +## Metadata + +- **Jira Issue**: TUT-283 +- **Created**: 20/Nov/24 1:36 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Website creation prepped for handoff +status: ready +labels: + - task +assignees: + - Max Brie +--- + +# Website creation prepped for handoff + +## Description + +Fleshed out framer website. Ready to hand over to Upwork person. + +## Metadata + +- **Jira Issue**: TUT-282 +- **Created**: 20/Nov/24 1:24 PM +- **Reporter**: Max Brie + +---ISSUE--- + +--- +title: Guardian Portal Refinements +status: ready +labels: + - task +assignees: + - Peter Apazidis +--- + +# Guardian Portal Refinements + +## Description + +Improve the styling of guardian portal such that the (top of the) bottom right and left components [Student statistics, and feedback] are vertically aligned. + +Instinct for how to solve, though feel free to solve how you like: + +* Make the cross a component. +* Use material UI grid v2. +* Use Material UI divider component. + +## Metadata + +- **Jira Issue**: TUT-281 +- **Created**: 20/Nov/24 12:10 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Add prettier pre-commit hook +status: ready +labels: + - enhancement +assignees: + - Peter Apazidis +--- + +# Add prettier pre-commit hook + +## Description + +we need to make it so that prettier formats all code before it is committed so that it is easier to identify changes between different PRs/branches. To do this add “npm run format” to the husky file that is in the root of the project. + +## Metadata + +- **Jira Issue**: TUT-280 +- **Created**: 20/Nov/24 11:08 AM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: Refine Session Initialization + Add initial Prompt on Chapter Select +status: ready +labels: + - task +--- + +# Refine Session Initialization + Add initial Prompt on Chapter Select + +## Description + +* Refine src/app/api/init_session so that it passes the selected chapter (according to the textbook_structure.json - attached) rather than a hardcoded ‘fractions’ +* If a user queries without clicking a chapter, the session should be initialized without the chapter selected. +* When a user clicks a chapter, an inital-prompt should be sent. Something along the lines of: +** “You are a math tutor, the student you’re tutoring has indicated that their class has reached $Selected_Chapter in their curriculum. You should greet the student: $user_name (hardcode for now), and prod them for the struggles they’re having with the subject, their interests, etc.” + +## Metadata + +- **Jira Issue**: TUT-279 +- **Created**: 20/Nov/24 10:28 AM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Learning Assessment Refinements +status: ready +labels: + - task +--- + +# Learning Assessment Refinements + +## Description + +* Add checks to require topic on-click of ‘begin’ rather than throwing an error when topic not set +* Cap # of questions requested at 5 for each type. +* Add check to ‘handleBeginClick’ to initialize session (without chapter selected) if not already initialized. +* Fix grading such that short-answer utilizes grade_short_responses, True/False utilizes the correct answers passed with it, and the multiple choices utilizes the (correct) index of the choices which is passed with the question. + +## Metadata + +- **Jira Issue**: TUT-278 +- **Created**: 20/Nov/24 10:23 AM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Refactor TTS to be faster - try another API. Deepgram advertises 200ms-500ms. +status: ready +labels: + - task +assignees: + - Flynn Cruse +--- + +# Refactor TTS to be faster - try another API. Deepgram advertises 200ms-500ms. + +## Description + + + +## Metadata + +- **Jira Issue**: TUT-277 +- **Created**: 18/Nov/24 8:42 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Go through 'use client' usage (only use when needed) +status: ready +labels: + - refactor +--- + +# Go through 'use client' usage (only use when needed) + +## Description + +I found an instance I believe in TutorSelection where ‘use client’ is used without hooks (it uses usetheme though from material ui so I could even still be wrong about this? just good to double check that all our uses are sane) + +![image-20241116-194338.png|width=1501,height=657,alt="image-20241116-194338.png"! + +use client disables a bunch of server side optimization so we should take care to only use it when absolutely necessary + +## Metadata + +- **Jira Issue**: TUT-276 +- **Created**: 16/Nov/24 12:44 PM +- **Reporter**: Drew + +---ISSUE--- + +--- +title: OCR-Editable-imageText +status: ready +labels: + - task +assignees: + - Flynn Cruse +--- + +# OCR-Editable-imageText + +## Description + +Following conversation with Ted: +In the PromptService backend, cletude-prompt/api.py there exists + +```@router.get("/stream_tutor/{session_id}") +async def stream_tutor( + session_id: str, + request: fastapi.Request, + user_input: str, + image_text: Optional[str] = fastapi.Query(default=None) +) -> sse_starlette.sse.EventSourceResponse: + """ + @brief Stream tutor responses for given prompt + @param session_id Session identifier + @param request FastAPI request object + @param user_input User input prompt + @param image_text Optional OCRed image text from the student + @return SSE response stream + @raises fastapi.HTTPException If streaming fails + """ + session = get_session(request, session_id) + + try: + # Decode URL-encoded image_text and combine with user_input if present + if image_text: + from urllib.parse import unquote + decoded_image_text = unquote(image_text) + combined_input = f"{user_input} + OCRed Image text: {decoded_image_text}" + else: + combined_input = user_input + + response_stream = session.assistant.stream_tutor_response( + user_input=combined_input) + return sse_starlette.sse.EventSourceResponse(response_stream) + except Exception as e: + raise fastapi.HTTPException(status_code=500, + detail=f"Streaming error: {str(e)}") +``` + +We should be passing text resulting from OCR as 'image_text' paramater rather than just as user input; we should also allow for the user to write an explanation/query of their own.... + +```@param image_text Optional OCRed image text from the student``` + + + +Set up a new component for holding OCR’d text, and allowing user-input in addition to it. Pass OCR’d text as image_text, along with user_input. + +## Metadata + +- **Jira Issue**: TUT-275 +- **Created**: 15/Nov/24 3:51 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Handle when "complete" returns from the backend +status: ready +labels: + - refactor +--- + +# Handle when "complete" returns from the backend + +## Description + +Sometimes if an incorrect path is set in the frontend for the chat “complete” is returned from the backend, and seems to be infinitely sent. We need to handle this. Talk to peter for clarification + +## Metadata + +- **Jira Issue**: TUT-274 +- **Created**: 15/Nov/24 1:37 PM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: BACKEND: All post requests should receive data from the request body, not in the URL +status: ready +labels: + - refactor +assignees: + - Ted +--- + +# BACKEND: All post requests should receive data from the request body, not in the URL + +## Description + +The standard is for fields/data to be sent through the body of a POST request, this is for security and flexibility reasons. All fields of POST requests need to be converted to utilizing the request body. So far only the {{practice_problems}} endpoint does this. + +## Metadata + +- **Jira Issue**: TUT-273 +- **Created**: 15/Nov/24 1:03 PM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: OCR-Interaction-Rendering +status: ready +labels: + - task +assignees: + - Flynn Cruse +--- + +# OCR-Interaction-Rendering + +## Description + +Utilize OCR pipeline to facilitate user interactions on the frontend. +Goal: User scans page, MathPix returns text scanned from page. The result is submitted as a user query (with correct rendering). The backend responds to the user-scanned query, with correctly rendering material. + +## Metadata + +- **Jira Issue**: TUT-272 +- **Created**: 15/Nov/24 10:49 AM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Connect to MathPix +status: ready +labels: + - enhancement +assignees: + - Peter Apazidis +--- + +# Connect to MathPix + +## Description + +Connect the OCR camera on the frontend to MathPix so that we can grab text/latex from an image (such as an equation). Definition of done is when we get data back, another ticket will handle actually displaying the data. Also the camera icon needs to be to the left of the search bar. + +## Metadata + +- **Jira Issue**: TUT-271 +- **Created**: 14/Nov/24 10:48 AM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: Implement chapter selection API, fix bug in chat response +status: ready +labels: + - refactor +assignees: + - Ted +--- + +# Implement chapter selection API, fix bug in chat response + +## Description + +* Add chapter buttons back in, and connect them to the backend so the search can be constrained [Talk with Ted] +* Remove [DONE] from the backend prompt in streaming; we are using an SSE if done event, no need for the streamed tag. [Ted] + +## Metadata + +- **Jira Issue**: TUT-270 +- **Created**: 14/Nov/24 8:23 AM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: Look over Textbook search/Database code +status: ready +labels: + - refactor +assignees: + - Drew +--- + +# Look over Textbook search/Database code + +## Description + +textbook_search.py and textbook_store.py + +## Metadata + +- **Jira Issue**: TUT-269 +- **Created**: 13/Nov/24 6:40 PM +- **Reporter**: Drew + +---ISSUE--- + +--- +title: Tutor/Textbook Selection - Center Text. Add Back Button +status: ready +labels: + - task +--- + +# Tutor/Textbook Selection - Center Text. Add Back Button + +## Description + +Ted - Peter - Flynn - Max = Meet to decide specifics if necessary… +For now assume 2 buttons - back and next. + +## Metadata + +- **Jira Issue**: TUT-268 +- **Created**: 13/Nov/24 6:28 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Pick Voices for Demo +status: ready +labels: + - task +--- + +# Pick Voices for Demo + +## Description + + + +## Metadata + +- **Jira Issue**: TUT-267 +- **Created**: 13/Nov/24 5:51 PM +- **Reporter**: Ted + +---ISSUE--- + +--- +title: achievements refactor +status: ready +labels: + - refactor +--- + +# achievements refactor + +## Description + +refer to [https://rightpathai.atlassian.net/browse/CLE-243|https://rightpathai.atlassian.net/browse/CLE-243|smart-link] for directions + +## Metadata + +- **Jira Issue**: TUT-266 +- **Created**: 12/Nov/24 8:40 PM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: guardian portal refactor +status: ready +labels: + - refactor +--- + +# guardian portal refactor + +## Description + +refer to [https://rightpathai.atlassian.net/browse/CLE-243|https://rightpathai.atlassian.net/browse/CLE-243|smart-link] for directions + +## Metadata + +- **Jira Issue**: TUT-265 +- **Created**: 12/Nov/24 8:40 PM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: learning assessment pages refactor +status: ready +labels: + - refactor +--- + +# learning assessment pages refactor + +## Description + +refer to [https://rightpathai.atlassian.net/browse/CLE-243|https://rightpathai.atlassian.net/browse/CLE-243|smart-link] for directions + +## Metadata + +- **Jira Issue**: TUT-264 +- **Created**: 12/Nov/24 8:39 PM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: chat page refactor +status: ready +labels: + - refactor +--- + +# chat page refactor + +## Description + +refer to [https://rightpathai.atlassian.net/browse/CLE-243|https://rightpathai.atlassian.net/browse/CLE-243|smart-link] for directions + +## Metadata + +- **Jira Issue**: TUT-263 +- **Created**: 12/Nov/24 8:39 PM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: Textbook selection refactor +status: ready +labels: + - refactor +--- + +# Textbook selection refactor + +## Description + +refer to [https://rightpathai.atlassian.net/browse/CLE-243|https://rightpathai.atlassian.net/browse/CLE-243|smart-link] for directions + +## Metadata + +- **Jira Issue**: TUT-262 +- **Created**: 12/Nov/24 8:38 PM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: Tutor selection refactor +status: ready +labels: + - refactor +--- + +# Tutor selection refactor + +## Description + +refer to [https://rightpathai.atlassian.net/browse/CLE-243|https://rightpathai.atlassian.net/browse/CLE-243|smart-link] for directions + +## Metadata + +- **Jira Issue**: TUT-261 +- **Created**: 12/Nov/24 8:37 PM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: Login refactor +status: ready +labels: + - refactor +--- + +# Login refactor + +## Description + +refer to [https://rightpathai.atlassian.net/browse/CLE-243|https://rightpathai.atlassian.net/browse/CLE-243|smart-link] for directions + +## Metadata + +- **Jira Issue**: TUT-260 +- **Created**: 12/Nov/24 8:37 PM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: Sidebar Responsivity +status: ready +labels: + - task +assignees: + - Flynn Cruse +--- + +# Sidebar Responsivity + +## Description + +Make the Sidebar responsive to different screen-sizes. + +## Metadata + +- **Jira Issue**: TUT-259 +- **Created**: 12/Nov/24 2:33 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: refactor sidebar +status: ready +labels: + - refactor +assignees: + - Peter Apazidis +--- + +# refactor sidebar + +## Description + +refer to [https://rightpathai.atlassian.net/browse/CLE-243|https://rightpathai.atlassian.net/browse/CLE-243|smart-link] for directions + +## Metadata + +- **Jira Issue**: TUT-258 +- **Created**: 12/Nov/24 12:27 PM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: Speed Shit Up +status: ready +labels: + - bug +assignees: + - Ted +--- + +# Speed Shit Up + +## Description + +When moving from one page to another, wait times are unacceptable. Compiling of individual pages isn’t great, either. + +## Metadata + +- **Jira Issue**: TUT-257 +- **Created**: 10/Nov/24 11:39 AM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Chapter Selection Yeet +status: ready +labels: + - refactor +assignees: + - Bennett David +--- + +# Chapter Selection Yeet + +## Description + +Move chapter selection from chat page spin-up, to the moment after you have locked in a textbook on the textbook selection page. + +## Metadata + +- **Jira Issue**: TUT-256 +- **Created**: 10/Nov/24 11:34 AM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Link textbook section to ID +status: ready +labels: + - task +--- + +# Link textbook section to ID + +## Description + +Link textbook section with id in db and frontend and create initialize assistant endpoint. + +## Metadata + +- **Jira Issue**: TUT-254 +- **Created**: 10/Nov/24 11:03 AM +- **Reporter**: Max Brie + +---ISSUE--- + +--- +title: Advisory board +status: ready +labels: + - task +assignees: + - Max Brie +--- + +# Advisory board + +## Description + +Fully lay out Advisor Requirements and documents. Flesh out board and what we like. + +## Metadata + +- **Jira Issue**: TUT-253 +- **Created**: 10/Nov/24 11:01 AM +- **Reporter**: Max Brie + +---ISSUE--- + +--- +title: Achievements Responsiveness +status: ready +labels: + - refactor +--- + +# Achievements Responsiveness + +## Description + +make achievements responsive from 600px width and above (in MUI that sm and above) + +## Metadata + +- **Jira Issue**: TUT-251 +- **Created**: 10/Nov/24 9:58 AM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: Guardian Portal Responsiveness +status: ready +labels: + - refactor +--- + +# Guardian Portal Responsiveness + +## Description + +make guardian portal responsive from 600px width and above (in MUI that sm and above) + +## Metadata + +- **Jira Issue**: TUT-250 +- **Created**: 10/Nov/24 9:58 AM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: Games Responsiveness +status: ready +labels: + - refactor +--- + +# Games Responsiveness + +## Description + +refer to [https://rightpathai.atlassian.net/browse/CLE-243|https://rightpathai.atlassian.net/browse/CLE-243|smart-link] for direction - should make responsive + + + +NOTE: we may not do this because the refactor might be a heavy load + +## Metadata + +- **Jira Issue**: TUT-249 +- **Created**: 10/Nov/24 9:52 AM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: Textbook Selection Responsiveness +status: ready +labels: + - refactor +--- + +# Textbook Selection Responsiveness + +## Description + +make textbook responsive from 600px width and above (in MUI that sm and above) + +## Metadata + +- **Jira Issue**: TUT-248 +- **Created**: 10/Nov/24 9:43 AM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: Tutor Selection Responsiveness +status: ready +labels: + - refactor +--- + +# Tutor Selection Responsiveness + +## Description + +make tutor selection responsive from 600px width and above (in MUI that sm and above) + +## Metadata + +- **Jira Issue**: TUT-247 +- **Created**: 10/Nov/24 9:43 AM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: Login Responsiveness 2 +status: ready +labels: + - refactor +--- + +# Login Responsiveness 2 + +## Description + +make login responsive from 600px width and above (in MUI that sm and above) + +## Metadata + +- **Jira Issue**: TUT-246 +- **Created**: 10/Nov/24 9:42 AM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: Chat Responsiveness (Learn Sesh) +status: ready +labels: + - refactor +--- + +# Chat Responsiveness (Learn Sesh) + +## Description + +make chat responsive from 600px width and above (in MUI that sm and above) + +## Metadata + +- **Jira Issue**: TUT-245 +- **Created**: 10/Nov/24 9:41 AM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: Learning Responsiveness +status: ready +labels: + - refactor +--- + +# Learning Responsiveness + +## Description + +make learning assessment pages responsive from 600px width and above (in MUI that sm and above) + +## Metadata + +- **Jira Issue**: TUT-244 +- **Created**: 10/Nov/24 9:37 AM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: Beta Demo Frontend Refinement +status: ready +labels: + - other +--- + +# Beta Demo Frontend Refinement + +## Description + +Do some refactoring in the following: + +* make code more modular +* reduce code duplication +* reorganize folders + +## Metadata + +- **Jira Issue**: TUT-243 +- **Created**: 10/Nov/24 9:28 AM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: Partnership plan +status: ready +labels: + - task +assignees: + - Max Brie +--- + +# Partnership plan + +## Description + +Contact potential partners (Open AI, Anthropic) + +## Metadata + +- **Jira Issue**: TUT-242 +- **Created**: 09/Nov/24 11:01 AM +- **Reporter**: Max Brie + +---ISSUE--- + +--- +title: Pricing Dashboard +status: ready +labels: + - task +assignees: + - Max Brie +--- + +# Pricing Dashboard + +## Description + +Deliver price dashboard notes to Ted. Create white label pricing dashboard for customers. + +## Metadata + +- **Jira Issue**: TUT-241 +- **Created**: 09/Nov/24 11:00 AM +- **Reporter**: Max Brie + +---ISSUE--- + +--- +title: Setup Google Auth +status: ready +labels: + - task +assignees: + - Flynn Cruse +--- + +# Setup Google Auth + +## Description + +Setup user signup & authentication with the database, so that each user’s dashboards can be dynamically rendered + +## Metadata + +- **Jira Issue**: TUT-240 +- **Created**: 08/Nov/24 6:42 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: First take at integrating databases into frontend +status: ready +labels: + - other +assignees: + - Bennett David +--- + +# First take at integrating databases into frontend + +## Description + +We need to integrate the databases into the functionality of Cletude to build out dynamic dashboards & leaderboards. + + + + +I used Postgres.new to help me to create the database structure and migration code quickly, here is the diagram and code: + +!https://lh7-rt.googleusercontent.com/docsz/AD_4nXdvDtVAl7UNJzkTy-orbzMVmDf1JDtVsFosZBTfm1cvLuotTbd7EyI4wD5fFYkMSfJT-a-Fv1ZDRJEp3J7CQPc3B5xI3m3p97qoRw-qR5fRDQp-Z0Ii12DvF4_4SRuEqpoyNPk2TTE7l97t4CXkK1087b4?key=59Eal5YYmkvCa9hIcB30BRdG|width=1218,height=948! + + +–SQL MIGRATION: + + + +create table users ( + +  id bigint primary key generated always as identity, + +  email text not null unique, + +  password text not null, + +  language_preference text, + +  class_code text, + +  role text check (role in ('student', 'teacher')) not null + +); + + + +create table conversations ( + +  id bigint primary key generated always as identity, + +  user_id bigint references users (id), + +  message_number int, + +  message text, + +  response_number int, + +  response text, + +  tutor_id text + +); + + + +create table classrooms ( + +  classroom_number text primary key, + +  teacher_id bigint references users (id), + +  textbook text + +); + + + +create table student_classroom ( + +  student_id bigint references users (id), + +  classroom_number text references classrooms (classroom_number), + +  primary key (student_id, classroom_number) + +); + + + +create table learning_assessments ( + +  id bigint primary key generated always as identity, + +  user_id bigint references users (id), + +  question_type text check ( + +    question_type in ('true/false', 'multiple choice', 'short answer') + +  ) not null, + +  question text not null, + +  correct_answer text not null, + +  user_response text, + +  is_correct boolean + +); + + + +create table assessments ( + +  id bigint primary key generated always as identity, + +  user_id bigint references users (id), + +  subject text not null, + +  topic text not null, + +  allotted_time interval, + +  time_to_complete interval + +); + + + +alter table learning_assessments + +add column assessment_id bigint references assessments (id); + + + +alter table learning_assessments + +drop user_id; + + + +create table conversation_sessions ( + +  id bigint primary key generated always as identity, + +  user_id bigint references users (id), + +  tutor_id text + +); + + + +alter table conversations + +add column session_id bigint references conversation_sessions (id); + + + +alter table conversations + +drop user_id, + +drop tutor_id; + + + +drop table if exists conversations; + + + +drop table if exists conversation_sessions; + + + +create table sessions ( + +  id bigint primary key generated always as identity, + +  user_id bigint references users (id), + +  start_time timestamp with time zone default current_timestamp, + +  end_time timestamp with time zone + +); + + + +create table messages ( + +  id bigint primary key generated always as identity, + +  session_id bigint references sessions (id), + +  sender text not null, + +  message_text text not null, + +  created_at timestamp with time zone default current_timestamp + +); + + + +alter table users + +add column username text unique not null; + + + +alter table users + +add constraint fk_class_code foreign key (class_code) references classrooms (classroom_number); + + + +alter table assessments + +add column num_multiple_choice int default 0, + +add column num_true_false int default 0, + +add column num_short_answer int default 0; + + + +create table game_leaderboards ( + +  id bigint primary key generated always as identity, + +  user_id bigint references users (id), + +  game_name text not null, + +  score int not null, + +  achieved_at timestamp with time zone default current_timestamp + +); + + + +alter table game_leaderboards + +add column subject text not null; + + + +alter table users + +rename column id to user_id; + + + +alter table sessions + +rename column id to session_id; + + + +alter table messages + +rename column id to message_id; + + + +alter table classrooms + +rename column classroom_number to classroom_id; + + + +alter table student_classroom + +rename column student_id to student_user_id; + + + +alter table student_classroom + +rename column classroom_number to classroom_id; + + + +alter table learning_assessments + +rename column id to learning_assessment_id; + + + +alter table assessments + +rename column id to assessment_id; + + + +alter table game_leaderboards + +rename column id to leaderboard_id; + + + +alter table sessions + +add column textbook text, + +add column selected_sections text, + +add column tutor_id bigint; + + + +alter table assessments + +add column tutor_id bigint; + + + +alter table messages + +drop sender; + + + +alter table messages + +add column role text check (role in ('system', 'user', 'assistant')) not null; + +## Metadata + +- **Jira Issue**: TUT-239 +- **Created**: 08/Nov/24 5:48 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Guardian Portal Review +status: ready +labels: + - task +assignees: + - Flynn Cruse +--- + +# Guardian Portal Review + +## Description + +* Center top tutors text +* Center student statistics text + +## Metadata + +- **Jira Issue**: TUT-238 +- **Created**: 08/Nov/24 5:02 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Achievements Review +status: ready +labels: + - task +assignees: + - Flynn Cruse +--- + +# Achievements Review + +## Description + +* Bold text challenge guardian elements +* Center student statistic text + +## Metadata + +- **Jira Issue**: TUT-237 +- **Created**: 08/Nov/24 5:01 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Sidebar Review +status: ready +labels: + - task +assignees: + - Flynn Cruse +--- + +# Sidebar Review + +## Description + +* Update guardian portal icon - appears the same as one of the others on develop) +* Move the “Cletude” title text up a bit so there is a division between the line and it; could use mb I think +* Make the word “Anna” Bold, and “Mathematics” font a bit bigger. + +## Metadata + +- **Jira Issue**: TUT-236 +- **Created**: 08/Nov/24 5:01 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Learning Assessment, Setup-Page Review +status: ready +labels: + - task +assignees: + - Bennett David +--- + +# Learning Assessment, Setup-Page Review + +## Description + +* Needs to be bigger, too much whitespace. +* Combine input boxes into one input box, call it topics [ Max from meeting] + +## Metadata + +- **Jira Issue**: TUT-235 +- **Created**: 08/Nov/24 5:00 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: G1: Space Game Review +status: ready +labels: + - task +assignees: + - Drew +--- + +# G1: Space Game Review + +## Description + +* Peter discovered a bug: Game doesn’t work when codespace is run in the browser. Works when run in visual studio code.  +* GameplayScene: +** Cap on music volume - deafening headphone-wearing persons is not ideal / change music? +** Add some kind of collision effect - explosion when a player hits an object +* GameOverScene:  +** Checks/X’s (indicating if the user got it right or wrong) don’t always seem to align with the questions +** We should see what the user answers (True/False) in addition to the full-question +** We might need to decrease the font size or add a clickable element which would reveal the full text - currently the text is discontinued and replaced by ‘...’ when space runs out (For the question that was asked) +* QuestionScene: Ted feels that the transparent background in this scene is distracting and the questions should be more of a pop out, with a opaqueblock behind them or something; could make it similar to what contains text on the learning-assement/assessment page. However this is in Phaser. +* Leaderboards page - needs designing + building. + +## Metadata + +- **Jira Issue**: TUT-234 +- **Created**: 08/Nov/24 5:00 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Remove [DONE] +status: ready +labels: + - task +assignees: + - Ted +--- + +# Remove [DONE] + +## Description + +* Remove [DONE] from the backend prompt/appendation in streaming; we are using an SSE if done event, no need for the streamed tag. + +## Metadata + +- **Jira Issue**: TUT-233 +- **Created**: 08/Nov/24 4:59 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Chat Page: Review +status: ready +labels: + - task +--- + +# Chat Page: Review + +## Description + +* Add chapter buttons back in, and connect them to the backend so the search can be constrained [Coordinate with Backend team] +* Chat interface has too much whitespace, needs to be bigger/wider +** Font-size increase in chat bubbles +** Search bar bigger; perhaps make the flavor text “Ask Away” or similar instead of “Search” + +## Metadata + +- **Jira Issue**: TUT-232 +- **Created**: 08/Nov/24 4:58 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Textbook-Selection Review +status: ready +labels: + - task +assignees: + - Bennett David +--- + +# Textbook-Selection Review + +## Description + +* Center text under textbook +* Double clicking textbook could act the same as the next button +* Make the next button match the next-button styling and placement from the Tutor-Selection Page for continuity. + +## Metadata + +- **Jira Issue**: TUT-231 +- **Created**: 08/Nov/24 4:57 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Tutor-Selection Review; Locks +status: ready +labels: + - task +assignees: + - Bennett David +--- + +# Tutor-Selection Review; Locks + +## Description + +Make locks bigger, centered on characters and opaque + +## Metadata + +- **Jira Issue**: TUT-230 +- **Created**: 08/Nov/24 4:56 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Chat 3 and LA Setup 2 (minor fixes) +status: ready +labels: + - refactor +assignees: + - Peter Apazidis +--- + +# Chat 3 and LA Setup 2 (minor fixes) + +## Description + +* Chat Page: +** Chat interface has too much whitespace, needs to be bigger/wider +*** Font-size increase in chat bubbles +*** Search bar bigger; perhaps make the flavor text “Ask Away” or similar instead of “Search” + +* Learning-Setup: +** Needs to be bigger, too much whitespace. +** Combine input boxes into one input box, call it topics [ Max from meeting] + +## Metadata + +- **Jira Issue**: TUT-229 +- **Created**: 08/Nov/24 1:47 PM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: minor changes tutor and textbook selection +status: ready +labels: + - enhancement +assignees: + - Peter Apazidis +--- + +# minor changes tutor and textbook selection + +## Description + +* Tutor-Selection: +** Locks should be bigger and opaque +* Textbook-Selection:  +** Center text under textbook +** Double clicking textbook could act the same as the next button +** Make the next button match the next-button styling and placement from the Tutor-Selection Page for continuity. +* Login +** fix one female tutor being much shorter than the other + +## Metadata + +- **Jira Issue**: TUT-228 +- **Created**: 07/Nov/24 7:59 PM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: Use route handlers for fetching backend data +status: ready +labels: + - refactor +assignees: + - Peter Apazidis +--- + +# Use route handlers for fetching backend data + +## Description + +As of now we are directly trying to ping the backend from the browser to fetch data, and this makes it so that we are unable to make fetches as port forwarding would have to be implemented for it to work. Instead, we are going to use next js route handlers, which fetches data from the server side. This provides more security, simplicity, and flexibility. + +## Metadata + +- **Jira Issue**: TUT-227 +- **Created**: 07/Nov/24 1:20 PM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: add back strict mode to front end project +status: ready +labels: + - enhancement +--- + +# add back strict mode to front end project + +## Description + +the strict mode setting was turned off because it was rendering components twice. Just for the demo we wanted to make sure this doesn’t happen so that rendering goes smoothly, but we need to add it back at some point for debugging purposes. You can find this property in a config file at the root of the project + +## Metadata + +- **Jira Issue**: TUT-226 +- **Created**: 06/Nov/24 9:54 AM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: Persist data across reloads +status: ready +labels: + - bug +assignees: + - Peter Apazidis +--- + +# Persist data across reloads + +## Description + +Data needs to be preserved when the page reloads, otherwise we are going to get bugs and unexpected behavior. It looks like we will need to use session or local storage to do this, research is needed on this. Make sure the following persist for now: + + +* learning assessment pages +* chat + +## Metadata + +- **Jira Issue**: TUT-225 +- **Created**: 06/Nov/24 9:08 AM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: Make Tutor-Image Clickable +status: ready +labels: + - task +assignees: + - Flynn Cruse +--- + +# Make Tutor-Image Clickable + +## Description + + + +## Metadata + +- **Jira Issue**: TUT-224 +- **Created**: 05/Nov/24 1:02 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: add phoenix to backend +status: ready +labels: + - task +--- + +# add phoenix to backend + +## Description + + + +## Metadata + +- **Jira Issue**: TUT-223 +- **Created**: 03/Nov/24 3:17 PM +- **Reporter**: Ted + +---ISSUE--- + +--- +title: Remove animation from chat header button +status: ready +labels: + - enhancement +assignees: + - Peter Apazidis +--- + +# Remove animation from chat header button + +## Description + +The “text mode” button in the chat header has an animation that continuously displays, and it is not needed. + +## Metadata + +- **Jira Issue**: TUT-222 +- **Created**: 03/Nov/24 2:49 PM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: Sign Up +status: ready +labels: + - other +assignees: + - Bennett David +--- + +# Sign Up + +## Description + +Provide a sign up page with the following fields +- Email +- Password +- Confirm Password +- Grade +- Language + +## Metadata + +- **Jira Issue**: TUT-221 +- **Created**: 01/Nov/24 9:28 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Tutor Selection Revisions +status: ready +labels: + - task +assignees: + - Flynn Cruse +--- + +# Tutor Selection Revisions + +## Description + + +Met with Max, the notes he provided on the Tutor selection page are: + +* [X ] Text is too small under tutors (now easily adjustable; if feedback is that it is too small still) +* [X ] Sophie circle is wrong - [Sophie.png|https://drive.google.com/file/d/12Mg-dnrmTEGP2na4qkntCFM4naeS2YS7/view?usp=drive_link] +* [ X] Circle should turn blue when clicking on Anna - Currently you still see the black circle when click her.  +* [X ] Who do you want to work with needs to be up top or more similar to the first design. Not currently clear. [Tutor Selection.png|https://drive.google.com/file/d/16B1ZZRmuI9SEDcDwESYs-rXRoohFYWyo/view?usp=drive_link] + +## Metadata + +- **Jira Issue**: TUT-220 +- **Created**: 01/Nov/24 1:44 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Fix tutor images not showing up +status: ready +labels: + - bug +assignees: + - Peter Apazidis +--- + +# Fix tutor images not showing up + +## Description + +changes in a previous PR to the location of images are causing tutors to not show up, just need to change the paths + +## Metadata + +- **Jira Issue**: TUT-219 +- **Created**: 01/Nov/24 1:33 PM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: Fix problems with Login page +status: ready +labels: + - bug +assignees: + - Peter Apazidis +--- + +# Fix problems with Login page + +## Description + +* Make tutor images bigger +* Change tutor image for Philip to [https://drive.google.com/file/d/1X4TNNn7-h5coa0Bojc56jytFzGMCOveT/view?usp=drive_link|https://drive.google.com/file/d/1X4TNNn7-h5coa0Bojc56jytFzGMCOveT/view?usp=drive_link|smart-link] +* Background should not actually be white, change to #e9f7ff +* change font to Monsterrat + +## Metadata + +- **Jira Issue**: TUT-218 +- **Created**: 01/Nov/24 8:12 AM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: Fix sidebar not fitting entirely within the screen view +status: ready +labels: + - bug +assignees: + - Peter Apazidis +--- + +# Fix sidebar not fitting entirely within the screen view + +## Description + +As of now the sidebar is so big that you have to scroll to see the bottom of it, which we dont want. We want it to be 100vh (the full height of the viewport). + +## Metadata + +- **Jira Issue**: TUT-217 +- **Created**: 31/Oct/24 1:36 PM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: API Cost +status: ready +labels: + - task +assignees: + - Ted +--- + +# API Cost + +## Description + +Api cost document for all API use + +## Metadata + +- **Jira Issue**: TUT-216 +- **Created**: 30/Oct/24 9:36 AM +- **Reporter**: Max Brie + +---ISSUE--- + +--- +title: Deliverables Matt +status: ready +labels: + - task +assignees: + - Max Brie +--- + +# Deliverables Matt + +## Description + +Deliver document by Nov 1 to Matt for Deliverables for project. He will then confirm and I will send out a contract early next week. + +## Metadata + +- **Jira Issue**: TUT-215 +- **Created**: 30/Oct/24 8:30 AM +- **Reporter**: Max Brie + +---ISSUE--- + +--- +title: Perfect Error Handling in Backend +status: ready +labels: + - task +assignees: + - Ted +--- + +# Perfect Error Handling in Backend + +## Description + + + +## Metadata + +- **Jira Issue**: TUT-214 +- **Created**: 26/Oct/24 11:38 AM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Review front end with Max & Ted +status: ready +labels: + - task +assignees: + - Max Brie +--- + +# Review front end with Max & Ted + +## Description + +Make adjustments for front end team and deliver document for them. + +## Metadata + +- **Jira Issue**: TUT-213 +- **Created**: 26/Oct/24 11:22 AM +- **Reporter**: Max Brie + +---ISSUE--- + +--- +title: Meeting question document +status: ready +labels: + - task +assignees: + - Max Brie +--- + +# Meeting question document + +## Description + +Get in full team agreement for answers for major questions for Quebcor/tc meetings + +## Metadata + +- **Jira Issue**: TUT-212 +- **Created**: 26/Oct/24 11:19 AM +- **Reporter**: Max Brie + +---ISSUE--- + +--- +title: Integrate other LLM providers to LLM interface +status: ready +labels: + - task +assignees: + - Flynn Cruse +--- + +# Integrate other LLM providers to LLM interface + +## Description + +Add other foundational model providers to our backend’s LLM interface. +EG: + + +* Anthropic - Claude Sonnet 3.5, Haiku 3.5 +* Google - Gemini 1.5 + +## Metadata + +- **Jira Issue**: TUT-211 +- **Created**: 26/Oct/24 9:23 AM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Firefli to Zap +status: ready +labels: + - task +assignees: + - Ted +--- + +# Firefli to Zap + +## Description + +Firefli notes to google drive + +## Metadata + +- **Jira Issue**: TUT-210 +- **Created**: 26/Oct/24 9:19 AM +- **Reporter**: Ted + +---ISSUE--- + +--- +title: redo prompts in French +status: ready +labels: + - task +--- + +# redo prompts in French + +## Description + + + +## Metadata + +- **Jira Issue**: TUT-209 +- **Created**: 26/Oct/24 9:05 AM +- **Reporter**: Ted + +---ISSUE--- + +--- +title: Global market analysis +status: ready +labels: + - task +assignees: + - Max Brie +--- + +# Global market analysis + +## Description + +Video of global market - + +## Metadata + +- **Jira Issue**: TUT-208 +- **Created**: 26/Oct/24 9:04 AM +- **Reporter**: Max Brie + +---ISSUE--- + +--- +title: Connect Frontend with backend docker +status: ready +labels: + - task +assignees: + - Drew +--- + +# Connect Frontend with backend docker + +## Description + +Setup api backend route that pulls from the backend through the event stream + +this is needed so the backend handles the requests to the service and the client requests are sent to the nextjs sersver not the service + +## Metadata + +- **Jira Issue**: TUT-207 +- **Created**: 26/Oct/24 9:04 AM +- **Reporter**: Ted + +---ISSUE--- + +--- +title: Implement Groq to test llm interface +status: ready +labels: + - task +assignees: + - Flynn Cruse +--- + +# Implement Groq to test llm interface + +## Description + + + +## Metadata + +- **Jira Issue**: TUT-206 +- **Created**: 26/Oct/24 9:03 AM +- **Reporter**: Ted + +---ISSUE--- + +--- +title: Print all documents +status: ready +labels: + - task +--- + +# Print all documents + +## Description + +Get all documents printed out and nicely laminated for meetings with PE/VC + +## Metadata + +- **Jira Issue**: TUT-205 +- **Created**: 26/Oct/24 9:03 AM +- **Reporter**: Max Brie + +---ISSUE--- + +--- +title: Refine Backend comments +status: ready +labels: + - task +assignees: + - Ted +--- + +# Refine Backend comments + +## Description + +Refine comments in backend to improve code readability + +## Metadata + +- **Jira Issue**: TUT-204 +- **Created**: 26/Oct/24 9:03 AM +- **Reporter**: Ted + +---ISSUE--- + +--- +title: Camera notepad sensor +status: ready +labels: + - task +assignees: + - Ted +--- + +# Camera notepad sensor + +## Description + +refine the notepad sensor functionality and provide ui team with camera input with sensor layered on top. + +## Metadata + +- **Jira Issue**: TUT-203 +- **Created**: 26/Oct/24 9:02 AM +- **Reporter**: Ted + +---ISSUE--- + +--- +title: Unit Economics document +status: ready +labels: + - task +assignees: + - Max Brie +--- + +# Unit Economics document + +## Description + +Lay out all major: + +* Lifetime value (LTV) +* Customer acquisition cost (CAC) +* Churn rate +* Retention rate (R) +* Average customer lifetime (ACL) +* Number of customers (C) +* Number of transactions (T) +* Total revenue (TR) +* Gross profit (GP) +* Average order value (AOV) +* Average gross margin (AGM) +* Gross margin per customer lifespan (GML) +* Discount rate (D) +* How do you calculate unit economics? +* Predictive LTV +* Flexible LTV + +## Metadata + +- **Jira Issue**: TUT-201 +- **Created**: 26/Oct/24 9:02 AM +- **Reporter**: Max Brie + +---ISSUE--- + +--- +title: Fix line length standards for doxygen stuff +status: ready +labels: + - task +assignees: + - Drew +--- + +# Fix line length standards for doxygen stuff + +## Description + + + +## Metadata + +- **Jira Issue**: TUT-200 +- **Created**: 25/Oct/24 7:24 PM +- **Reporter**: Ted + +---ISSUE--- + +--- +title: add flake8 auto-formatting (black or ruff) to pre-commit hooks +status: ready +labels: + - task +assignees: + - Ted +--- + +# add flake8 auto-formatting (black or ruff) to pre-commit hooks + +## Description + +[flake8-black · PyPI|https://pypi.org/project/flake8-black/] + +## Metadata + +- **Jira Issue**: TUT-199 +- **Created**: 24/Oct/24 5:02 PM +- **Reporter**: Ted + +---ISSUE--- + +--- +title: OCR functionality +status: ready +labels: + - enhancement +assignees: + - Ted +--- + +# OCR functionality + +## Description + +In the chat header there needs to be a camera icon that allows the app to take a picture using the users laptop camera of a sheet of paper with words. The app will process the picture and translate it to text on the app (add more detail to this description if needed) + +## Metadata + +- **Jira Issue**: TUT-198 +- **Created**: 24/Oct/24 3:11 PM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: Tutor select redirect to textbook selection +status: ready +labels: + - enhancement +assignees: + - Bennett David +--- + +# Tutor select redirect to textbook selection + +## Description + + + +## Metadata + +- **Jira Issue**: TUT-197 +- **Created**: 23/Oct/24 5:42 PM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: Future Maker sales deck & Plan +status: ready +labels: + - task +assignees: + - Max Brie +--- + +# Future Maker sales deck & Plan + +## Description + + + +## Metadata + +- **Jira Issue**: TUT-196 +- **Created**: 23/Oct/24 9:36 AM +- **Reporter**: Max Brie + +---ISSUE--- + +--- +title: implement the "switch tutor" button +status: ready +labels: + - other +assignees: + - Bennett David +--- + +# implement the "switch tutor" button + +## Description + +When clicked, the “switch tutor” should bring the user to the tutor selection screen. When the user makes changes, it needs to be reflected in the sidebar. + +## Metadata + +- **Jira Issue**: TUT-195 +- **Created**: 21/Oct/24 10:54 AM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: Link up with backend +status: ready +labels: + - other +--- + +# Link up with backend + +## Description + +Use data from the backend instead of hard coding tutor name, topic, etc. + +## Metadata + +- **Jira Issue**: TUT-194 +- **Created**: 21/Oct/24 10:53 AM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: Add the UI for the tutor selection +status: ready +labels: + - other +assignees: + - Peter Apazidis +--- + +# Add the UI for the tutor selection + +## Description + +Add the math tutor avatar (temporarily) as the chosen tutor for the tutor image. Add a hard-coded name where the format is “[tutor name] - [subject]”. Finally add a switch tutor button that does nothing yet. + +## Metadata + +- **Jira Issue**: TUT-193 +- **Created**: 21/Oct/24 10:50 AM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: Language Swap Config +status: ready +labels: + - task +assignees: + - Ted +--- + +# Language Swap Config + +## Description + +Need a mechanism in the backend to swap between languages; frontend coordination needed to understand how to connect visual component(s) to such a switch. + +## Metadata + +- **Jira Issue**: TUT-192 +- **Created**: 19/Oct/24 11:24 AM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Wolfram Alpha Integration +status: ready +labels: + - other +assignees: + - Flynn Cruse +--- + +# Wolfram Alpha Integration + +## Description + +Research wolfram tool calls into our own tutor - they have an api + +## Metadata + +- **Jira Issue**: TUT-191 +- **Created**: 19/Oct/24 11:16 AM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Textbook Selection DB Cxn +status: ready +labels: + - refactor +assignees: + - Peter Apazidis +--- + +# Textbook Selection DB Cxn + +## Description + +Get the necessary data from the backend to display the textbooks that can be chosen and switch away from using dummy data. + +## Metadata + +- **Jira Issue**: TUT-190 +- **Created**: 17/Oct/24 3:29 PM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: Implement the textbook selection page UI +status: ready +labels: + - other +assignees: + - Bennett David +--- + +# Implement the textbook selection page UI + +## Description + +Create the textbook selection page in accordance with the wireframes. The page will only be accessed after a tutor has been selected. The user will be given the ability to choose which textbook is relevant to their class. Textbooks that we do not yet support will have a locked icon over them. + +## Metadata + +- **Jira Issue**: TUT-189 +- **Created**: 17/Oct/24 3:18 PM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: Beta Demo 1st Game +status: ready +labels: + - other +assignees: + - Flynn Cruse +--- + +# Beta Demo 1st Game + +## Description + + + +## Metadata + +- **Jira Issue**: TUT-188 +- **Created**: 16/Oct/24 6:43 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Generate Tech stack document for pitch meetings (brain map) +status: ready +labels: + - task +--- + +# Generate Tech stack document for pitch meetings (brain map) + +## Description + + + +## Metadata + +- **Jira Issue**: TUT-187 +- **Created**: 16/Oct/24 6:41 PM +- **Reporter**: Ted + +---ISSUE--- + +--- +title: Textbook Selection +status: ready +labels: + - enhancement +assignees: + - Bennett David +--- + +# Textbook Selection + +## Description + +Implement the textbook selection page in accordance with the wireframes. + +## Metadata + +- **Jira Issue**: TUT-186 +- **Created**: 16/Oct/24 6:15 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Create generic component for chat interface +status: ready +labels: + - other +assignees: + - Peter Apazidis +--- + +# Create generic component for chat interface + +## Description + +Besides the chat bubbles that get populated in the chat interface, we want to be able to display other components, for example the different textbook chapters for a user to choose. However we will likely want to display other components besides the textbook chapter selection, so make a sure we can render whatever components we want in between speech bubbles and implement the chapter selection. As of now, we want to render a list of textbook chapters that a user can select for the tutoring session. However, because there is no backend connection yet a dummy list can be made. + +## Metadata + +- **Jira Issue**: TUT-185 +- **Created**: 16/Oct/24 5:01 PM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: Change tutor selection on sidebar +status: ready +labels: + - enhancement +assignees: + - Peter Apazidis +--- + +# Change tutor selection on sidebar + +## Description + +The tutor and its subject needs to be populated in the sidebar. That includes an image of the tutor. As of now we just have a button on the sidebar to choose the tutor, but in the new wireframes it is guaranteed that a tutor will be selected before the sidebar is displayed. + +## Metadata + +- **Jira Issue**: TUT-184 +- **Created**: 16/Oct/24 4:40 PM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: Backend connection +status: ready +labels: + - other +--- + +# Backend connection + +## Description + +Get the backend integrated with the frontend so that we are getting/setting actual responses from/to the AI. + +## Metadata + +- **Jira Issue**: TUT-183 +- **Created**: 16/Oct/24 8:03 AM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: Partner with Tutoring Company +status: ready +labels: + - task +--- + +# Partner with Tutoring Company + +## Description + +Get partnership with tutoring company + +## Metadata + +- **Jira Issue**: TUT-182 +- **Created**: 12/Oct/24 11:23 AM +- **Reporter**: Max Brie + +---ISSUE--- + +--- +title: Add Docker Compose to Frontend +status: ready +labels: + - task +assignees: + - Drew +--- + +# Add Docker Compose to Frontend + +## Description + +Docker compose should provide access to the backend docker image. + +## Metadata + +- **Jira Issue**: TUT-181 +- **Created**: 09/Oct/24 6:19 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Fix face of tutors +status: ready +labels: + - task +assignees: + - Max Brie +--- + +# Fix face of tutors + +## Description + + + +## Metadata + +- **Jira Issue**: TUT-180 +- **Created**: 09/Oct/24 6:12 PM +- **Reporter**: Max Brie + +---ISSUE--- + +--- +title: Competitor Analysis +status: ready +labels: + - task +assignees: + - Max Brie +--- + +# Competitor Analysis + +## Description + +Identify and differentiate from competitors / alternatives in market. + +## Metadata + +- **Jira Issue**: TUT-179 +- **Created**: 09/Oct/24 10:00 AM +- **Reporter**: Max Brie + +---ISSUE--- + +--- +title: Reconnect with Jennings +status: ready +labels: + - task +assignees: + - Max Brie +--- + +# Reconnect with Jennings + +## Description + + + +## Metadata + +- **Jira Issue**: TUT-178 +- **Created**: 09/Oct/24 9:10 AM +- **Reporter**: Max Brie + +---ISSUE--- + +--- +title: Provide tutor choice to sidebar +status: ready +labels: + - other +assignees: + - Bennett David +--- + +# Provide tutor choice to sidebar + +## Description + +The chosen tutor on the tutor selection screen should be reflected in the sidebar as per the wireframes - coordination needed to pass a flag to the sidebar. + +## Metadata + +- **Jira Issue**: TUT-177 +- **Created**: 06/Oct/24 8:35 AM +- **Reporter**: Peter Apazidis + +---ISSUE--- + +--- +title: RPAI Who we are +status: ready +labels: + - refactor +assignees: + - Max Brie +--- + +# RPAI Who we are + +## Description + +Going to make upgrades to our current information deck so that when we meet we have some information ready to go…. English and French. + +## Metadata + +- **Jira Issue**: TUT-176 +- **Created**: 03/Oct/24 7:24 AM +- **Reporter**: Max Brie + +---ISSUE--- + +--- +title: Code Review Checklist +status: ready +labels: + - other +assignees: + - Drew +--- + +# Code Review Checklist + +## Description + +* Create a list of “tests” that need to be passed to pass code review + +## Metadata + +- **Jira Issue**: TUT-175 +- **Created**: 29/Sep/24 2:46 PM +- **Reporter**: Ted + +---ISSUE--- + +--- +title: Create Exception Handling Document +status: ready +labels: + - other +--- + +# Create Exception Handling Document + +## Description + +* Hyper Link in [https://docs.google.com/document/d/1mBuE85OrYLSvyH8dYxTjG6QeeRr_VHutdRHgsTa8Oaw/edit?usp=sharing|https://docs.google.com/document/d/1mBuE85OrYLSvyH8dYxTjG6QeeRr_VHutdRHgsTa8Oaw/edit?usp=sharing|smart-link] + +## Metadata + +- **Jira Issue**: TUT-173 +- **Created**: 29/Sep/24 2:24 PM +- **Reporter**: Drew + +---ISSUE--- + +--- +title: Give Google Doc permissions to team +status: ready +labels: + - enhancement +assignees: + - Flynn Cruse +--- + +# Give Google Doc permissions to team + +## Description + +The team cannot move files in the Tech Knowledge directory. Make sure team has editing permissions in shared drive directories. + +## Metadata + +- **Jira Issue**: TUT-172 +- **Created**: 29/Sep/24 1:26 PM +- **Reporter**: Flynn Cruse + +---ISSUE--- + +--- +title: Email for Key players (outreach 1.0) +status: ready +labels: + - task +assignees: + - Max Brie +--- + +# Email for Key players (outreach 1.0) + +## Description + +Create email that will be used for sales outreach. Will send these emails out first and then see the responses we get. Also waiting on a warm intro. + +## Metadata + +- **Jira Issue**: TUT-171 +- **Created**: 26/Sep/24 2:43 PM +- **Reporter**: Max Brie + +---ISSUE--- + +--- +title: Kog - Follow up +status: ready +labels: + - refactor +assignees: + - Max Brie +--- + +# Kog - Follow up + +## Description + +Still trying to get final payment from Kog resolved. + +## Metadata + +- **Jira Issue**: TUT-170 +- **Created**: 26/Sep/24 8:12 AM +- **Reporter**: Max Brie + +---ISSUE--- + +--- +title: Chatgpt Tutor Endpoint with Streaming +status: ready +labels: + - other +assignees: + - Drew +--- + +# Chatgpt Tutor Endpoint with Streaming + +## Description + +Create a tutor endpoint with streaming support + +It will likely also take a bit of research to see how to add streaming support (whether it is websockets or something else) +Tutor endpoint does not need any prompting or any layers, should just pass input directly to GPT so it can + +be used for testing purposes + +## Metadata + +- **Jira Issue**: TUT-169 +- **Created**: 25/Sep/24 6:46 PM +- **Reporter**: Drew + +---ISSUE--- + +--- +title: Update and improve the RPAI website to better represent our brand and team. +status: ready +labels: + - refactor +assignees: + - Max Brie +--- + +# Update and improve the RPAI website to better represent our brand and team. + +## Description + + + +Tasks: + +* Redesign the team section +* Create and integrate a new, improved intro video +* Rework branding elements across the site +* Review and update overall site content for consistency with new branding + +Outcome: A refreshed, more engaging website that accurately represents RPAI current team, vision, and brand identity. + +## Metadata + +- **Jira Issue**: TUT-167 +- **Created**: 25/Sep/24 1:34 PM +- **Reporter**: Max Brie + +---ISSUE--- + +--- +title: Create and integrate a new, improved intro video +status: ready +labels: + - other +--- + +# Create and integrate a new, improved intro video + +## Description + +Switch out, out dated video. Get PE guys excited. + +## Metadata + +- **Jira Issue**: TUT-165 +- **Created**: 25/Sep/24 1:30 PM +- **Reporter**: Max Brie + +---ISSUE--- + +--- +title: Website Update +status: ready +labels: + - other +--- + +# Website Update + +## Description + +Update and improve the Clétude website to better represent our brand and team. + +## Metadata + +- **Jira Issue**: TUT-163 +- **Created**: 25/Sep/24 1:27 PM +- **Reporter**: Max Brie + +---ISSUE--- + +--- +title: Race Game Conversion to Phaser +status: ready +labels: + - other +assignees: + - Flynn Cruse +--- + +# Race Game Conversion to Phaser + +## Description + +* Convert existing game logic into JavaScript for web compatibility. + +* Optimize code for performance. + +## Metadata + +- **Jira Issue**: TUT-161 +- **Created**: 25/Sep/24 11:55 AM +- **Reporter**: Ted + +---ISSUE--- + +--- +title: Game Library Selection and Research +status: ready +labels: + - other +assignees: + - Flynn Cruse +--- + +# Game Library Selection and Research + +## Description + +* Evaluate JavaScript game libraries suitable for educational games. + +* Choose libraries that offer required features and stability. + +## Metadata + +- **Jira Issue**: TUT-160 +- **Created**: 25/Sep/24 11:55 AM +- **Reporter**: Ted + +---ISSUE--- + +--- +title: Text-to-Speech Implementation +status: ready +labels: + - enhancement +assignees: + - Flynn Cruse +--- + +# Text-to-Speech Implementation + +## Description + +* Select high-quality TTS libraries for natural tutor voices. + +* Support French Canadian and English with multiple variations (race/sex/age) + +## Metadata + +- **Jira Issue**: TUT-159 +- **Created**: 25/Sep/24 11:54 AM +- **Reporter**: Ted + +---ISSUE--- + +--- +title: Adaptive Learning Integration +status: ready +labels: + - enhancement +assignees: + - Ted +--- + +# Adaptive Learning Integration + +## Description + +* Align the prompt system with the adaptive learning paths. + +* Personalize prompts based on user history. + +## Metadata + +- **Jira Issue**: TUT-158 +- **Created**: 25/Sep/24 11:53 AM +- **Reporter**: Ted + +---ISSUE--- + +--- +title: Dynamic Problem Generation +status: ready +labels: + - enhancement +assignees: + - Ted +--- + +# Dynamic Problem Generation + +## Description + +* Implement algorithms to generate new practice problems. + +* Utilize LLM capabilities to vary problem parameters. + +## Metadata + +- **Jira Issue**: TUT-157 +- **Created**: 25/Sep/24 11:52 AM +- **Reporter**: Ted + +---ISSUE--- + +--- +title: Designing Core Tutor Prompt Templates +status: ready +labels: + - enhancement +assignees: + - Ted +--- + +# Designing Core Tutor Prompt Templates + +## Description + + Create templates tailored to different subjects and difficulty levels. + +* Ensure prompts are engaging and pedagogically sound. + +## Metadata + +- **Jira Issue**: TUT-156 +- **Created**: 25/Sep/24 11:52 AM +- **Reporter**: Ted + +---ISSUE--- + +--- +title: Practice Problem Management +status: ready +labels: + - enhancement +assignees: + - Ted +--- + +# Practice Problem Management + +## Description + +* **Problem Extraction Algorithms** +* Automate extraction of practice problems from textbook content. +* Ensure problems are correctly formatted and complete. + + + +* **Categorization and Tagging** +* Develop a system to categorize problems by type, difficulty, and topic. +* Implement metadata tagging for easy retrieval. + + + +* **Source Tracking** +* Keep detailed references for each problem's origin. + + + +* **Efficient Storage Solutions** +* Build a scalable database for practice problems. +* Optimize for quick search and retrieval operations. + + + +* Match practice problems with answer key solutions + +## Metadata + +- **Jira Issue**: TUT-154 +- **Created**: 25/Sep/24 11:50 AM +- **Reporter**: Ted + +---ISSUE--- + +--- +title: File Input Parsing +status: ready +labels: + - enhancement +assignees: + - Ted +--- + +# File Input Parsing + +## Description + +* Create functionality to parse and process various file formats (PDFs, Word documents). + +* Ensure security measures are in place for file uploads. + +## Metadata + +- **Jira Issue**: TUT-151 +- **Created**: 25/Sep/24 11:46 AM +- **Reporter**: Ted + +---ISSUE--- + +--- +title: Image Input Handling +status: ready +labels: + - enhancement +assignees: + - Ted +--- + +# Image Input Handling + +## Description + +* Develop modules to process and interpret image inputs. + +* Implement OCR (Optical Character Recognition) for text extraction from images. + +## Metadata + +- **Jira Issue**: TUT-150 +- **Created**: 25/Sep/24 11:46 AM +- **Reporter**: Ted + +---ISSUE--- + +--- +title: Output Format +status: ready +labels: + - enhancement +assignees: + - Ted +--- + +# Output Format + +## Description + +* **Define Standardized Structures** + +* Establish consistent formats for lessons, tests, and general responses. + +* Create templates for different content types (text, images, files). + + + +* **Implement Formatting Mechanisms** + +* Develop functions to handle various prompt types. + +* Ensure compatibility across different devices and platforms. + +## Metadata + +- **Jira Issue**: TUT-149 +- **Created**: 25/Sep/24 11:45 AM +- **Reporter**: Ted + +---ISSUE--- + +--- +title: Add practice problems api endpoint (no streaming necessary) +status: ready +labels: + - enhancement +assignees: + - Drew +--- + +# Add practice problems api endpoint (no streaming necessary) + +## Description + +* Practice Problems +** Inputs: +*** Question type +*** Problem Types +*** Extra user data (future) possibly section they are in +** Structured Output +*** list of questions + +## Metadata + +- **Jira Issue**: TUT-148 +- **Created**: 24/Sep/24 9:14 PM +- **Reporter**: Drew + +---ISSUE--- + +--- +title: Chatgpt Tutor Endpoint with Streaming +status: ready +labels: + - enhancement +assignees: + - Drew +--- + +# Chatgpt Tutor Endpoint with Streaming + +## Description + +Create a tutor endpoint with streaming support + +It will likely also take a bit of research to see how to add streaming support (whether it is websockets or something else) +Tutor endpoint does not need any prompting or any layers, should just pass input directly to GPT so it can + +be used for testing purposes + +## Metadata + +- **Jira Issue**: TUT-147 +- **Created**: 24/Sep/24 9:13 PM +- **Reporter**: Drew + +---ISSUE--- + +--- +title: Cletude Shopify Website Rework +status: ready +labels: + - refactor +assignees: + - Max Brie +--- + +# Cletude Shopify Website Rework + +## Description + +eview current website design + +* Brainstorm ideas for a more engaging preview +* Develop new content focused on product preview +* Implement design changes +* Test website functionality and responsiveness +* Gather team feedback and make final adjustments + +## Metadata + +- **Jira Issue**: TUT-145 +- **Created**: 24/Sep/24 2:59 PM +- **Reporter**: Max Brie + +---ISSUE--- + +--- +title: Identify - Hire - Process +status: ready +labels: + - task +assignees: + - Max Brie +--- + +# Identify - Hire - Process + +## Description + +* Define criteria for student reviewers +* Create job posting or outreach message + +* Identify channels for reaching French students + +* Screen and select two suitable candidates + +* Brief selected students on review process + +## Metadata + +- **Jira Issue**: TUT-144 +- **Created**: 24/Sep/24 2:57 PM +- **Reporter**: Max Brie + +---ISSUE--- + +--- +title: French Interns +status: ready +labels: + - other +assignees: + - Max Brie +--- + +# French Interns + +## Description + +Recruit two French students to review and check the French language output of Cletude. + +## Metadata + +- **Jira Issue**: TUT-143 +- **Created**: 24/Sep/24 2:56 PM +- **Reporter**: Max Brie + +---ISSUE--- + +--- +title: Research and identify relevant publishers and private equity funds +status: ready +labels: + - task +assignees: + - Max Brie +--- + +# Research and identify relevant publishers and private equity funds + +## Description + +* Gather contact information (emails, phone numbers) for key decision-makers +* Compile all information into an accessible document +* Set up a system for regular updates and maintenance of the list + +## Metadata + +- **Jira Issue**: TUT-142 +- **Created**: 24/Sep/24 2:55 PM +- **Reporter**: Max Brie + +---ISSUE--- + +--- +title: Clétude Potential Partner Identification +status: ready +labels: + - other +assignees: + - Max Brie +--- + +# Clétude Potential Partner Identification + +## Description + +Compile a comprehensive list of publishers and private equity funds that could be interested in Clétude. This document will include detailed contact information and be accessible to the team. + +## Metadata + +- **Jira Issue**: TUT-141 +- **Created**: 24/Sep/24 2:54 PM +- **Reporter**: Max Brie + +---ISSUE--- + +--- +title: Clétude Master Document +status: ready +labels: + - other +assignees: + - Max Brie +--- + +# Clétude Master Document + +## Description + +A comprehensive master document for Clétude that addresses all potential questions from investors, private equity firms, partners, and publishers. This document will serve as a source of truth, containing both business and technical information about Clétude. It will be developed by compiling a list of anticipated questions and gathering detailed answers from relevant team members. + +## Metadata + +- **Jira Issue**: TUT-140 +- **Created**: 24/Sep/24 2:51 PM +- **Reporter**: Max Brie + +---ISSUE--- + +--- +title: Visual Content +status: ready +labels: + - task +assignees: + - Max Brie +--- + +# Visual Content + +## Description + +* Design an visually appealing layout with branded elements +* Add a QR code linking to a digital version for easy sharing +* Set up Google Analytics to track document views and engagement + +## Metadata + +- **Jira Issue**: TUT-139 +- **Created**: 24/Sep/24 2:42 PM +- **Reporter**: Max Brie + +---ISSUE--- + +--- +title: Writing Content +status: ready +labels: + - task +assignees: + - Max Brie +--- + +# Writing Content + +## Description + +* Draft a 1-page executive summary of Cletude's vision and impact +* Create 3-5 page detailed overview, including: +** RPAI company background (1 paragraph) +** Cletude platform key features (1 page) +** Learning paths and methodology (1/2 page) +** Interactive games and engagement tools (1/2 page) +** Future development roadmap (1/2 page) + +## Metadata + +- **Jira Issue**: TUT-138 +- **Created**: 24/Sep/24 2:40 PM +- **Reporter**: Max Brie + +---ISSUE--- + +--- +title: Clétude Future Document +status: ready +labels: + - other +assignees: + - Max Brie +--- + +# Clétude Future Document + +## Description + +Create a forward-looking document to leave with partners, highlighting Clétude's potential. + +## Metadata + +- **Jira Issue**: TUT-137 +- **Created**: 24/Sep/24 2:37 PM +- **Reporter**: Max Brie + +---ISSUE--- + +--- +title: Review of deck +status: ready +labels: + - task +assignees: + - Max Brie +--- + +# Review of deck + +## Description + +Meet with business advisor and team to review sales deck. Review feedback and implement changes if needed + +## Metadata + +- **Jira Issue**: TUT-136 +- **Created**: 24/Sep/24 2:36 PM +- **Reporter**: Max Brie + +---ISSUE--- + +--- +title: Gather data & elements - Refine Pitch in draft document +status: ready +labels: + - task +assignees: + - Max Brie +--- + +# Gather data & elements - Refine Pitch in draft document + +## Description + +Will need to decide on what story we want to tell in these slides. (Max 10 Slides) + +Will map out slides in doc before going to Canva. + +## Metadata + +- **Jira Issue**: TUT-135 +- **Created**: 24/Sep/24 2:34 PM +- **Reporter**: Max Brie + +---ISSUE--- + +--- +title: "sales/pitch" Deck +status: ready +labels: + - other +assignees: + - Max Brie +--- + +# "sales/pitch" Deck + +## Description + +Develop an engaging presentation for potential publishers and private equity funds. + +This is not a regular investor pitch deck. + +## Metadata + +- **Jira Issue**: TUT-134 +- **Created**: 24/Sep/24 2:32 PM +- **Reporter**: Max Brie + +---ISSUE--- + +--- +title: Feedback loop +status: ready +labels: + - task +assignees: + - Max Brie +--- + +# Feedback loop + +## Description + +Get feedback on video from current RPAI team, advisors and local network. Make edits as needed. + +## Metadata + +- **Jira Issue**: TUT-133 +- **Created**: 24/Sep/24 2:31 PM +- **Reporter**: Max Brie + +---ISSUE--- + +--- +title: Edit video and finalize into mp4 final format +status: ready +labels: + - task +assignees: + - Max Brie +--- + +# Edit video and finalize into mp4 final format + +## Description + +Make all edits needed to finalize video as well as make a french copy. + +Need both versions in drive. + +## Metadata + +- **Jira Issue**: TUT-132 +- **Created**: 24/Sep/24 2:31 PM +- **Reporter**: Max Brie + +---ISSUE--- + +--- +title: Script and Plan for Video +status: ready +labels: + - task +assignees: + - Max Brie +--- + +# Script and Plan for Video + +## Description + +Create comprehensive plan for demo video including all elements needed. Storyboard format + +## Metadata + +- **Jira Issue**: TUT-131 +- **Created**: 24/Sep/24 2:29 PM +- **Reporter**: Max Brie + +---ISSUE--- + +--- +title: Research successful product demo videos +status: ready +labels: + - task +assignees: + - Max Brie +--- + +# Research successful product demo videos + +## Description + +Look into short demo video that current academic tools have. + +## Metadata + +- **Jira Issue**: TUT-130 +- **Created**: 24/Sep/24 2:27 PM +- **Reporter**: Max Brie + +---ISSUE--- + +--- +title: Demo Video Creation +status: ready +labels: + - other +assignees: + - Max Brie +--- + +# Demo Video Creation + +## Description + +Produce a 30-60 second video showcasing Cletude for potential customers. (Publishers) + +## Metadata + +- **Jira Issue**: TUT-129 +- **Created**: 24/Sep/24 2:26 PM +- **Reporter**: Max Brie + +---ISSUE--- + +--- +title: Update Canva Draft of Demo Design & French Version +status: ready +labels: + - task +assignees: + - Max Brie +--- + +# Update Canva Draft of Demo Design & French Version + +## Description + +We made changes to demo design while in Bumpass, I am making changes to the draft. We also need a French Version of Demo so I will create a copy. + +## Metadata + +- **Jira Issue**: TUT-128 +- **Created**: 24/Sep/24 1:58 PM +- **Reporter**: Max Brie + +---ISSUE--- + +--- +title: Repo Grouping +status: ready +labels: + - other +assignees: + - Ted +--- + +# Repo Grouping + +## Description + +Look into options for working in multiple repositories, shell games with sub-modules, etc. especially pertaining to textbook pipeline (would benefit from its own repo we can group with other Clétude work) + +## Metadata + +- **Jira Issue**: TUT-127 +- **Created**: 07/Sep/24 11:54 AM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Define Development Standards +status: ready +labels: + - task +assignees: + - Drew +--- + +# Define Development Standards + +## Description + +Hoping to build out a living breathing doc for both frontend development standards (and backend where appropriate, as elements may relate) + +## Metadata + +- **Jira Issue**: TUT-126 +- **Created**: 04/Sep/24 7:54 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Clétude Acct login +status: ready +labels: + - other +assignees: + - Bennett David +--- + +# Clétude Acct login + +## Description + +Either provide connection to base user profile [https://rightpathai.atlassian.net/browse/CLE-62|https://rightpathai.atlassian.net/browse/CLE-62|smart-link], or faux login - planning on google (and other 3rd-party) auth at a later time. + +## Metadata + +- **Jira Issue**: TUT-125 +- **Created**: 04/Sep/24 7:17 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: New Dev Containers +status: ready +labels: + - other +assignees: + - Drew +--- + +# New Dev Containers + +## Description + +Please stand up a devcontainer.json specific to the Cletude Frontend and Prompt-Service repositories. Possible to use separate .vscode config from separate repo for extensions to pipe into devcontainer.json + +## Metadata + +- **Jira Issue**: TUT-124 +- **Created**: 04/Sep/24 6:17 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Log Non-Prompts in DB +status: ready +labels: + - other +assignees: + - Bennett David +--- + +# Log Non-Prompts in DB + +## Description + +Learn how to store any frontend interaction / element in the DB - API expected to only store prompts. + +Look into Prisma for interacting with the database. Likely the ideal choice - describe the database tables in .confs, then they essentially end up turned into .js objects. + +## Metadata + +- **Jira Issue**: TUT-123 +- **Created**: 03/Sep/24 8:38 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: GP Feedback Form +status: ready +labels: + - other +assignees: + - Flynn Cruse +--- + +# GP Feedback Form + +## Description + +Add a feedback form to encourage parents to provide input on the system. + +## Metadata + +- **Jira Issue**: TUT-122 +- **Created**: 03/Sep/24 8:28 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: GP Challenge +status: ready +labels: + - other +assignees: + - Flynn Cruse +--- + +# GP Challenge + +## Description + +Implement the feature for guardians to challenge their child's game scores, same as [https://rightpathai.atlassian.net/browse/CLE-115|https://rightpathai.atlassian.net/browse/CLE-115|smart-link]. + +## Metadata + +- **Jira Issue**: TUT-121 +- **Created**: 03/Sep/24 8:28 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: GP Performance Stats +status: ready +labels: + - other +assignees: + - Flynn Cruse +--- + +# GP Performance Stats + +## Description + +Show the same stats as in [https://rightpathai.atlassian.net/browse/CLE-88|https://rightpathai.atlassian.net/browse/CLE-88|smart-link] - currently [https://rightpathai.atlassian.net/browse/CLE-113|https://rightpathai.atlassian.net/browse/CLE-113|smart-link] and [https://rightpathai.atlassian.net/browse/CLE-114|https://rightpathai.atlassian.net/browse/CLE-114|smart-link]. + +## Metadata + +- **Jira Issue**: TUT-120 +- **Created**: 03/Sep/24 8:27 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: User Info Edits +status: ready +labels: + - other +assignees: + - Bennett David +--- + +# User Info Edits + +## Description + +Allow users to update their email, password, and username. Will require database interactions. + +## Metadata + +- **Jira Issue**: TUT-119 +- **Created**: 03/Sep/24 8:25 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Font Size Slider +status: ready +labels: + - other +assignees: + - Bennett David +--- + +# Font Size Slider + +## Description + +Implement a feature for users to adjust the font size. Integers only, preferably. + +## Metadata + +- **Jira Issue**: TUT-118 +- **Created**: 03/Sep/24 8:24 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Dark Theme +status: ready +labels: + - other +assignees: + - Bennett David +--- + +# Dark Theme + +## Description + +Add an option for users to switch between light and dark theme - dark theme should simply have black instead of white, and white or cletude blue text where needed. + +## Metadata + +- **Jira Issue**: TUT-117 +- **Created**: 03/Sep/24 8:23 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Guardian Portal +status: ready +labels: + - enhancement +assignees: + - Flynn Cruse +--- + +# Guardian Portal + +## Description + +Design and implement the parent portal interface - should look very similar to [https://rightpathai.atlassian.net/browse/CLE-88|https://rightpathai.atlassian.net/browse/CLE-88|smart-link] but with black borders. + +## Metadata + +- **Jira Issue**: TUT-116 +- **Created**: 03/Sep/24 8:21 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Guardian Challenge +status: ready +labels: + - other +assignees: + - Flynn Cruse +--- + +# Guardian Challenge + +## Description + +Add a feature for guardians to challenge existing game scores. + +## Metadata + +- **Jira Issue**: TUT-115 +- **Created**: 03/Sep/24 8:20 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Assessment Stats +status: ready +labels: + - other +assignees: + - Flynn Cruse +--- + +# Assessment Stats + +## Description + +Present the user's assessment score average and time spent with tutors. + +## Metadata + +- **Jira Issue**: TUT-114 +- **Created**: 03/Sep/24 8:20 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Tutor Levels +status: ready +labels: + - other +assignees: + - Flynn Cruse +--- + +# Tutor Levels + +## Description + +Show the user's level with each tutor. + +## Metadata + +- **Jira Issue**: TUT-113 +- **Created**: 03/Sep/24 8:20 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Review Past Conversations +status: ready +labels: + - other +assignees: + - Bennett David +--- + +# Review Past Conversations + +## Description + +Implement functionality to review past conversations with a tutor using the chat interface. + +## Metadata + +- **Jira Issue**: TUT-112 +- **Created**: 03/Sep/24 8:19 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Philip Annoucements +status: ready +labels: + - other +assignees: + - Bennett David +--- + +# Philip Annoucements + +## Description + +Add a feature for displaying announcements in a speech bubble of Philip’s on the right side of the page. + +## Metadata + +- **Jira Issue**: TUT-111 +- **Created**: 03/Sep/24 8:19 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Display Past Conversations +status: ready +labels: + - other +assignees: + - Bennett David +--- + +# Display Past Conversations + +## Description + +Create a display for users to view their past conversations on the left side of the page. Ideally each conversation has a subject as the title, the most recent message as a subheader, and the age of the most recent message aligned right in that subheader. + +## Metadata + +- **Jira Issue**: TUT-110 +- **Created**: 03/Sep/24 8:19 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: LA Download Results +status: ready +labels: + - other +assignees: + - Bennett David +--- + +# LA Download Results + +## Description + +Implement a feature for users to download their assessment results. + +## Metadata + +- **Jira Issue**: TUT-109 +- **Created**: 03/Sep/24 8:18 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: LA Review with Tutor +status: ready +labels: + - other +assignees: + - Bennett David +--- + +# LA Review with Tutor + +## Description + +Create a feature allowing users to review their assessment with a tutor using the chat interface. + +## Metadata + +- **Jira Issue**: TUT-108 +- **Created**: 03/Sep/24 8:18 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: LA Question Type Selection +status: ready +labels: + - other +assignees: + - Flynn Cruse +--- + +# LA Question Type Selection + +## Description + +Allow users to specify the desired count for each type of question in their assessment. + +## Metadata + +- **Jira Issue**: TUT-106 +- **Created**: 03/Sep/24 8:16 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: LA Duration Setting +status: ready +labels: + - other +assignees: + - Flynn Cruse +--- + +# LA Duration Setting + +## Description + +Add an optional duration setting for assessments. + +## Metadata + +- **Jira Issue**: TUT-105 +- **Created**: 03/Sep/24 8:16 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: LA Difficulty Selection +status: ready +labels: + - other +assignees: + - Flynn Cruse +--- + +# LA Difficulty Selection + +## Description + +Create a difficulty selection mechanism using tick marks for clarity - user should see they don’t have endless choices. + +## Metadata + +- **Jira Issue**: TUT-104 +- **Created**: 03/Sep/24 8:15 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: LA Topic Selection +status: ready +labels: + - other +assignees: + - Flynn Cruse +--- + +# LA Topic Selection + +## Description + +Enable users to select specific topics or opt for a random selection. + +## Metadata + +- **Jira Issue**: TUT-103 +- **Created**: 03/Sep/24 8:15 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: LA Subject Selection +status: ready +labels: + - other +assignees: + - Flynn Cruse +--- + +# LA Subject Selection + +## Description + +Allow users to choose subjects for review in their assessment. + +## Metadata + +- **Jira Issue**: TUT-102 +- **Created**: 03/Sep/24 8:15 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Profile/Notis/Settings +status: ready +labels: + - other +assignees: + - Bennett David +--- + +# Profile/Notis/Settings + +## Description + +Create a new profile display in the top right chat header with photo and name inside border - ideally can click for settings and notis. Depends on [https://rightpathai.atlassian.net/browse/CLE-99|https://rightpathai.atlassian.net/browse/CLE-99|smart-link]. + +## Metadata + +- **Jira Issue**: TUT-101 +- **Created**: 03/Sep/24 8:08 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Mode Drop-Down +status: ready +labels: + - other +assignees: + - Bennett David +--- + +# Mode Drop-Down + +## Description + +In the drop down add the “text” and “voice” options (do not implement them). + +## Metadata + +- **Jira Issue**: TUT-100 +- **Created**: 03/Sep/24 8:08 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: SB Interactivity +status: ready +labels: + - other +assignees: + - Peter Apazidis +--- + +# SB Interactivity + +## Description + +Improve the sidebar's interactivity with hover effects - ideally spacing widens around top and bottom of hovered-over item. Color could also change of hovered-over item. + +## Metadata + +- **Jira Issue**: TUT-96 +- **Created**: 03/Sep/24 8:00 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: SB Collapsibility +status: ready +labels: + - other +assignees: + - Peter Apazidis +--- + +# SB Collapsibility + +## Description + +Create a collapsible sidebar with appropriate visual indicators and functionality - ideally carrot points left when uncollapsed, and carrot points right when collapsed. Ideally icons still show and are still clickable when collapsed, and an abbreviated cletude logo shows in the top left as well. + +## Metadata + +- **Jira Issue**: TUT-95 +- **Created**: 03/Sep/24 7:59 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Forgot Password +status: ready +labels: + - other +assignees: + - Bennett David +--- + +# Forgot Password + +## Description + +Build in a "Forgot Password" selection & feature for user account recovery. + +## Metadata + +- **Jira Issue**: TUT-92 +- **Created**: 03/Sep/24 7:49 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Sign In & Up Buttons +status: ready +labels: + - other +assignees: + - Bennett David +--- + +# Sign In & Up Buttons + +## Description + +Redesign the Sign In button according to the 2.0 canva. Provide a Sign Up button that looks similar. (Transparent fill, small, centered, border) + +## Metadata + +- **Jira Issue**: TUT-91 +- **Created**: 03/Sep/24 7:49 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Responsive Login2 Design +status: ready +labels: + - other +assignees: + - Bennett David +--- + +# Responsive Login2 Design + +## Description + +Create a responsive design for the login and sign up pages that stacks on medium breakpoints and shrinks on smaller ones. + +## Metadata + +- **Jira Issue**: TUT-90 +- **Created**: 03/Sep/24 7:49 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: User Settings +status: ready +labels: + - enhancement +assignees: + - Bennett David +--- + +# User Settings + +## Description + +Design and implement the user settings page. Should open when the user clicks on ‘settings’ icon by their profile icon & username. + +## Metadata + +- **Jira Issue**: TUT-89 +- **Created**: 03/Sep/24 7:43 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Achievements +status: ready +labels: + - enhancement +assignees: + - Flynn Cruse +--- + +# Achievements + +## Description + +Design and implement the achievements page to track user progress. + +## Metadata + +- **Jira Issue**: TUT-88 +- **Created**: 03/Sep/24 7:41 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Review +status: ready +labels: + - enhancement +assignees: + - Flynn Cruse +--- + +# Review + +## Description + +Design and implement the review page for past learning activities. + +## Metadata + +- **Jira Issue**: TUT-87 +- **Created**: 03/Sep/24 7:40 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Learning Assessment Result +status: ready +labels: + - enhancement +assignees: + - Peter Apazidis +--- + +# Learning Assessment Result + +## Description + +Design and implement the results page for completed assessments. + +## Metadata + +- **Jira Issue**: TUT-86 +- **Created**: 03/Sep/24 7:38 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Learning Assessment +status: ready +labels: + - enhancement +assignees: + - Peter Apazidis +--- + +# Learning Assessment + +## Description + +The learning assessment will consist of hardcoded questions, where each question will displayed in the main view with multiple choice answers. The number of multiple choice answers for each question I assume to be 4. At the top right there will be a count and total of the questions. A submit button will be placed below the choices to submit an answer. + +## Metadata + +- **Jira Issue**: TUT-85 +- **Created**: 03/Sep/24 7:38 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Learning Assessment Setup +status: ready +labels: + - enhancement +assignees: + - Flynn Cruse +--- + +# Learning Assessment Setup + +## Description + +Design and implement the setup interface for learning assessments. + +## Metadata + +- **Jira Issue**: TUT-84 +- **Created**: 03/Sep/24 7:38 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Student Speech/Entry Bar +status: ready +labels: + - enhancement +assignees: + - Peter Apazidis +--- + +# Student Speech/Entry Bar + +## Description + +Abstract out the chat entry component as a flexible design that can accommodate future additional features. It needs to consist of at least the input box and the submit button, which will be a right arrow (which should be aesthetic). One thing that can be done is to have some sort of parametrized sizing for the input. Would be good if we can think of more things that we may want to add for customization. + +## Metadata + +- **Jira Issue**: TUT-83 +- **Created**: 03/Sep/24 7:37 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Login 2/Sign Up Page +status: ready +labels: + - refactor +assignees: + - Bennett David +--- + +# Login 2/Sign Up Page + +## Description + +Redesign the login page, and design and implement the sign-up page for new users, for the application. Expecting to need our own user profiles in the near future, but hoping to start with just google auth (then presumably microsoft, apple, github, etc.) + +## Metadata + +- **Jira Issue**: TUT-81 +- **Created**: 03/Sep/24 7:32 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Gather Expert Tutor Content +status: ready +labels: + - other +assignees: + - Max Brie +--- + +# Gather Expert Tutor Content + +## Description + +Collect tutor manuals and related resources to provide context for the expert tutor functionality. + +## Metadata + +- **Jira Issue**: TUT-80 +- **Created**: 03/Sep/24 7:28 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Gather Textbooks +status: ready +labels: + - other +assignees: + - Max Brie +--- + +# Gather Textbooks + +## Description + +Collect 10 textbooks based on the syllabuses provided by Max, using resources like [http://libgen.is|http://libgen.is|smart-link] . + +## Metadata + +- **Jira Issue**: TUT-79 +- **Created**: 03/Sep/24 7:28 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Automate Ingestion Process +status: ready +labels: + - other +assignees: + - Ted +--- + +# Automate Ingestion Process + +## Description + +Develop an automated system to process newly added textbooks without manual intervention. + +## Metadata + +- **Jira Issue**: TUT-78 +- **Created**: 03/Sep/24 7:26 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Vectorize & Store Textbook Data +status: ready +labels: + - other +assignees: + - Ted +--- + +# Vectorize & Store Textbook Data + +## Description + +Create a system to vectorize the processed textbook data and store it in the vector database. + +## Metadata + +- **Jira Issue**: TUT-77 +- **Created**: 03/Sep/24 7:26 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Extract & Tag Info Chunks +status: ready +labels: + - other +assignees: + - Ted +--- + +# Extract & Tag Info Chunks + +## Description + +Implement a process to extract key information chunks from textbooks and tag them appropriately. + +## Metadata + +- **Jira Issue**: TUT-76 +- **Created**: 03/Sep/24 7:25 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Extract & Tag Textbook Q&As +status: ready +labels: + - other +assignees: + - Ted +--- + +# Extract & Tag Textbook Q&As + +## Description + +Develop a system to extract Q&A from textbooks and tag them with relevant subjects/topics. + +## Metadata + +- **Jira Issue**: TUT-75 +- **Created**: 03/Sep/24 7:25 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Textbook Loading Process +status: ready +labels: + - other +assignees: + - Ted +--- + +# Textbook Loading Process + +## Description + +Create a process for loading textbooks into a format interpretable by the LLM, considering OCR for non-digital textbooks. Hoping for plaintext at the first-two-weeks stage, as opposed to more complex info (formulas, images). + +## Metadata + +- **Jira Issue**: TUT-74 +- **Created**: 03/Sep/24 7:25 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Content Gathering +status: ready +labels: + - task +assignees: + - Max Brie +--- + +# Content Gathering + +## Description + +Collect necessary educational content for the system. Shooting for a healthy mix of French and English. Hoping all hands participate, adding textbooks/content to our attached drive store as we go. Could define what’s definitive/most important after collection. + +## Metadata + +- **Jira Issue**: TUT-73 +- **Created**: 03/Sep/24 7:24 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Textbook Ingestion +status: ready +labels: + - enhancement +assignees: + - Ted +--- + +# Textbook Ingestion + +## Description + +Develop and implement a system for ingesting and processing textbook content. + +## Metadata + +- **Jira Issue**: TUT-72 +- **Created**: 03/Sep/24 7:23 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: FastAPI Practice Problems Endpoint (no streaming) +status: ready +labels: + - other +assignees: + - Drew +--- + +# FastAPI Practice Problems Endpoint (no streaming) + +## Description + +* Practice Problems +** Inputs: +*** Question type +*** Problem Types +*** Extra user data (future) possibly section they are in +** Structured Output +*** list of questions + +## Metadata + +- **Jira Issue**: TUT-71 +- **Created**: 03/Sep/24 7:18 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Finalize Initial Design +status: ready +labels: + - other +assignees: + - Flynn Cruse +--- + +# Finalize Initial Design + +## Description + +Complete the initial design of the API, referencing the attached Cletude API documentation. + +## Metadata + +- **Jira Issue**: TUT-70 +- **Created**: 03/Sep/24 7:18 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Frontend Mermaid +status: ready +labels: + - other +assignees: + - Bennett David +--- + +# Frontend Mermaid + +## Description + +Create a Mermaid chart that illustrates the flow of the frontend components. Should reflect Figma flow. + +## Metadata + +- **Jira Issue**: TUT-69 +- **Created**: 03/Sep/24 7:16 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Backend Mermaids +status: ready +labels: + - other +assignees: + - Ted +--- + +# Backend Mermaids + +## Description + +Finalize the detailed Mermaid charts specifically for the backend components. + +## Metadata + +- **Jira Issue**: TUT-68 +- **Created**: 03/Sep/24 7:16 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Design cloud infrastructure +status: ready +labels: + - other +assignees: + - Drew +--- + +# Design cloud infrastructure + +## Description + +Decide on the most suitable deployment strategy for the project. + +Design Cloud infrastructure + +* Decide whats needed to build up our infrastructure + +## Metadata + +- **Jira Issue**: TUT-67 +- **Created**: 03/Sep/24 7:14 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Learning Path Core Logic +status: ready +labels: + - other +assignees: + - Ted +--- + +# Learning Path Core Logic + +## Description + +Create the fundamental logic for the learning path, including progression and curriculum structure. +Ideally learning path is ultimately dymanic, but this ticket’s intent is to build out the actual architecture of ‘learning’. Building blocks + +## Metadata + +- **Jira Issue**: TUT-66 +- **Created**: 03/Sep/24 7:14 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Base Syllabus Architecture +status: ready +labels: + - other +assignees: + - Ted +--- + +# Base Syllabus Architecture + +## Description + +Develop a comprehensive organization strategy for subjects and topics within the syllabus. + +## Metadata + +- **Jira Issue**: TUT-65 +- **Created**: 03/Sep/24 7:13 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Refactor K*G Engine Prompt Manager +status: ready +labels: + - other +assignees: + - Ted +--- + +# Refactor K*G Engine Prompt Manager + +## Description + +Modify the existing prompt manager to retrieve prompts from the database instead of text files. It will now be an entirely new feature that came from no where in particular. + +MySQL (lite?) - set up prompt table, with list of prompts, and a key-word (dictionary?) to get them. + +sql-model approach: to stand-up the schema…? + +Postgresql (pg-vector extension) + +## Metadata + +- **Jira Issue**: TUT-64 +- **Created**: 03/Sep/24 7:11 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Textbook Vector Search Setup +status: ready +labels: + - other +assignees: + - Ted +--- + +# Textbook Vector Search Setup + +## Description + +Implement a vector search system for textbooks with subject/topic sorting capabilities. + +## Metadata + +- **Jira Issue**: TUT-63 +- **Created**: 03/Sep/24 7:10 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Base User Profile +status: ready +labels: + - other +assignees: + - Flynn Cruse +--- + +# Base User Profile + +## Description + +Develop a User DataFrame to store essential information for each team member. + +## Metadata + +- **Jira Issue**: TUT-62 +- **Created**: 03/Sep/24 7:10 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Spin Up Database +status: ready +labels: + - other +assignees: + - Ted +--- + +# Spin Up Database + +## Description + +Research Supabase and Amazon RDS as backend solutions, with a focus on pricing and features. +Create and configure the necessary database instances for the project. + +## Metadata + +- **Jira Issue**: TUT-60 +- **Created**: 03/Sep/24 7:09 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: GitHub Secrets +status: ready +labels: + - other +assignees: + - Flynn Cruse +--- + +# GitHub Secrets + +## Description + +Configure Github Secrets to securely manage API keys and eliminate the need for .env files. May need individualized setup / care for each user account’s user secrets. + +## Metadata + +- **Jira Issue**: TUT-59 +- **Created**: 03/Sep/24 7:08 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Pydantic and SQLAlchemy +status: ready +labels: + - other +assignees: + - Ted +--- + +# Pydantic and SQLAlchemy + +## Description + +Set up Pydantic for data validation and SQLAlchemy for database operations. + +## Metadata + +- **Jira Issue**: TUT-58 +- **Created**: 03/Sep/24 7:07 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Poetry Setup +status: ready +labels: + - other +assignees: + - Bennett David +--- + +# Poetry Setup + +## Description + +Configure poetry for Python dependency management. + +## Metadata + +- **Jira Issue**: TUT-57 +- **Created**: 03/Sep/24 7:04 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Linting Pipeline Setup +status: ready +labels: + - other +assignees: + - Drew +--- + +# Linting Pipeline Setup + +## Description + +Implement a linting pipeline to ensure consistent code style across the project. + +## Metadata + +- **Jira Issue**: TUT-56 +- **Created**: 03/Sep/24 7:03 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Dev Tools & Hooks +status: ready +labels: + - other +assignees: + - Drew +--- + +# Dev Tools & Hooks + +## Description + +Set up necessary development tools including mypy, yamf, and precommit hooks to maintain code quality. Also a shot Jira issue code hooks can be included here. + +## Metadata + +- **Jira Issue**: TUT-55 +- **Created**: 03/Sep/24 7:03 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Folder Structure +status: ready +labels: + - other +assignees: + - Peter Apazidis +--- + +# Folder Structure + +## Description + +Create a logical and efficient folder structure for the project. + +## Metadata + +- **Jira Issue**: TUT-54 +- **Created**: 03/Sep/24 7:03 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Beta API Dev +status: ready +labels: + - task +assignees: + - Drew +--- + +# Beta API Dev + +## Description + +Design and implement the project's API. + +## Metadata + +- **Jira Issue**: TUT-53 +- **Created**: 03/Sep/24 7:01 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Beta Documentation +status: ready +labels: + - task +assignees: + - Bennett David +--- + +# Beta Documentation + +## Description + +Create and maintain comprehensive documentation for the project. + +## Metadata + +- **Jira Issue**: TUT-52 +- **Created**: 03/Sep/24 7:01 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: System Design +status: ready +labels: + - task +assignees: + - Ted +--- + +# System Design + +## Description + +Design the core architecture and logic for the learning system. + +## Metadata + +- **Jira Issue**: TUT-51 +- **Created**: 03/Sep/24 7:01 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Beta Backend Config +status: ready +labels: + - task +assignees: + - Ted +--- + +# Beta Backend Config + +## Description + +Configure the backend infrastructure, including database setup and core functionality implementation. + +## Metadata + +- **Jira Issue**: TUT-50 +- **Created**: 03/Sep/24 7:00 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Beta Repo Setup +status: ready +labels: + - task +assignees: + - Drew +--- + +# Beta Repo Setup + +## Description + +Set up the project's GitHub repository with proper structure and development tools to ensure a smooth development process. + +## Metadata + +- **Jira Issue**: TUT-49 +- **Created**: 03/Sep/24 7:00 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Beta UI +status: ready +labels: + - other +assignees: + - Peter Apazidis +--- + +# Beta UI + +## Description + +This epic encompasses all tasks related to designing and implementing the user interface for the application. All sub-issues should adhere to the attached Canva as possible. BD asking MB for sure whether these elements will come from Figma outside help, or could come from figma ourselves. + +## Metadata + +- **Jira Issue**: TUT-48 +- **Created**: 03/Sep/24 6:55 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Beta Content Management +status: ready +labels: + - other +--- + +# Beta Content Management + +## Description + +This epic covers all aspects of content gathering, processing, and integration into the system. + +## Metadata + +- **Jira Issue**: TUT-47 +- **Created**: 03/Sep/24 6:54 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Beta Setup & Infra +status: ready +labels: + - other +--- + +# Beta Setup & Infra + +## Description + +This epic encompasses all tasks related to setting up the initial project infrastructure, including repository setup, backend configuration, and API design. + +## Metadata + +- **Jira Issue**: TUT-46 +- **Created**: 03/Sep/24 6:52 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Deepgram/11Labs for Voice +status: ready +labels: + - other +assignees: + - Ted +--- + +# Deepgram/11Labs for Voice + +## Description + + + +## Metadata + +- **Jira Issue**: TUT-45 +- **Created**: 24/Aug/24 1:02 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Tutor Images as Buttons +status: ready +labels: + - refactor +assignees: + - Ted +--- + +# Tutor Images as Buttons + +## Description + +Instead of having to select tutor’s name, should be able to click on profile image to select also + +## Metadata + +- **Jira Issue**: TUT-44 +- **Created**: 22/Aug/24 6:56 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Codespace not Viewed via VSCode Breaking Flask +status: ready +labels: + - bug +assignees: + - Bennett David +--- + +# Codespace not Viewed via VSCode Breaking Flask + +## Description + +Still uncertain of the exact nature of the issue, but app.py has an ‘access error’ trying to interact with pages whenever it’s stood up via a Github Codespace not being viewed via local VSCode. Thinking the ports/forwarding are behaving as expected when routed out of that particular viewer (VSCode), but somehow breaking when routed out of chromium+firefox. + +## Metadata + +- **Jira Issue**: TUT-43 +- **Created**: 21/Aug/24 8:53 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Shopify Rework +status: ready +labels: + - task +assignees: + - Max Brie +--- + +# Shopify Rework + +## Description + +Want to rework our clétude shopify to show more options, and to work on both desktop/mobile + +## Metadata + +- **Jira Issue**: TUT-42 +- **Created**: 19/Aug/24 6:58 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: 100 Signups +status: ready +labels: + - task +assignees: + - Max Brie +--- + +# 100 Signups + +## Description + +Shooting for 100 signups/commitments before Y Comb deadline. + +## Metadata + +- **Jira Issue**: TUT-41 +- **Created**: 19/Aug/24 6:57 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Assistant Tutor AI +status: ready +labels: + - other +assignees: + - Flynn Cruse +--- + +# Assistant Tutor AI + +## Description + +Need to be able to swap to a more generalized study assistant model, not subject-specific. + +Summarized: +Step 1. User will input a query; stored as {user_query} + +Step 2. User's question will be passed as a parameter {user_query} to a gpt-4omini model which selects what subject expert(s) are best suited to provide accurate-context about that query. The options are: Canadian History assistant, math, chemistry, technology. The assistant will output the subject in a standard format for our backend to process. JSON could work. + +Step 3. The backend receives subject selection and queries the pre-defined subject-matter expert Assistant. the response is stored as a variable {subject-matter-expert-response}. + +Step 4. {subject-matter-expert-response}. is passed into the predefined Tutor expert along with the {language} parameter (defined by the language toggle component - French or English), and the . {user_query} from step 1. The tutor expert will refine all the context it has received into the most optimal response that an expert tutor would give a student in order to expedite their mastery of a subject. Important Note: the goal is not to cheat, the goal is to teach. + +## Metadata + +- **Jira Issue**: TUT-40 +- **Created**: 19/Aug/24 6:56 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Std. Review Session w/Learning +status: ready +labels: + - other +assignees: + - Peter Apazidis +--- + +# Std. Review Session w/Learning + +## Description + +Please see the third-to-last page in the linked canva. Same interface as [https://rightpathai.atlassian.net/browse/CLE-5|https://rightpathai.atlassian.net/browse/CLE-5|smart-link] but should only prompt user with review-type questions, based on their history. Could be connected to a different model. + +User should be presented with a chat interface for tutor-student review (with send button on right). When initially spinning up, user should be presented with a first concept that is providing difficulty, and buttons ‘Start a new lesson’ and ‘Previous topic’. + +## Metadata + +- **Jira Issue**: TUT-39 +- **Created**: 19/Aug/24 6:46 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Enable Streaming +status: ready +labels: + - other +assignees: + - Peter Apazidis +--- + +# Enable Streaming + +## Description + +Allow the respose to trail in to the user as it generates live. + +## Metadata + +- **Jira Issue**: TUT-38 +- **Created**: 19/Aug/24 6:32 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Game Selection +status: ready +labels: + - other + - ActiveReviewNeeded +assignees: + - Flynn Cruse +--- + +# Game Selection + +## Description + +Should mirror the layout of [https://rightpathai.atlassian.net/browse/CLE-4|https://rightpathai.atlassian.net/browse/CLE-4|smart-link], but text and images should show a game. Brain Blitz has to be one. + +For Beta, hoping to make grid responsive, and to show ‘coming soon’ for most games. A 4x1 grid expected for widest breakpoint, then stack on narrow, then shrink. + +## Metadata + +- **Jira Issue**: TUT-37 +- **Created**: 19/Aug/24 6:30 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: App Submit +status: ready +labels: + - task +assignees: + - Max Brie +--- + +# App Submit + +## Description + + + +## Metadata + +- **Jira Issue**: TUT-36 +- **Created**: 19/Aug/24 6:01 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: History Pane (faux) +status: ready +labels: + - other +--- + +# History Pane (faux) + +## Description + +When opened, this window should show mock chat histories, implying each option can be clicked on to re-enter (and continue) that existing chat. + +## Metadata + +- **Jira Issue**: TUT-35 +- **Created**: 19/Aug/24 5:46 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: History Buttonage +status: ready +labels: + - other +--- + +# History Buttonage + +## Description + +‘Previous’ button in top right, that should ideally open up [https://rightpathai.atlassian.net/browse/CLE-35|https://rightpathai.atlassian.net/browse/CLE-35|smart-link] when clicked. + +## Metadata + +- **Jira Issue**: TUT-34 +- **Created**: 19/Aug/24 5:46 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Chat Header +status: ready +labels: + - enhancement +assignees: + - Bennett David +--- + +# Chat Header + +## Description + +Refer to canva as needed, but further changes expected before BETA 3 sprint. + +## Metadata + +- **Jira Issue**: TUT-33 +- **Created**: 19/Aug/24 5:44 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Language in UI +status: ready +labels: + - other +--- + +# Language in UI + +## Description + +Entire UI should be able to be swapped to FR from EN, and vice versa. + +## Metadata + +- **Jira Issue**: TUT-32 +- **Created**: 19/Aug/24 5:35 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Language Select +status: ready +labels: + - other +assignees: + - Bennett David +--- + +# Language Select + +## Description + +A switch in the top right of each page should allow the user to indicate that they choose EN or FR. This ticket does not relate to the actual language changing in the UI. + +## Metadata + +- **Jira Issue**: TUT-31 +- **Created**: 19/Aug/24 5:34 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Study Plan Gen +status: ready +labels: + - other +assignees: + - Flynn Cruse +--- + +# Study Plan Gen + +## Description + +If time permits, can have a model generate plan tailored to user entry, instead of relying on canned plan for the demo. + +## Metadata + +- **Jira Issue**: TUT-30 +- **Created**: 19/Aug/24 5:33 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Alt Explanation Gen +status: ready +labels: + - other +assignees: + - Flynn Cruse +--- + +# Alt Explanation Gen + +## Description + +If time permits, can have a model generate alternate explanations, instead of relying on canned alt explanations for the demo. + +## Metadata + +- **Jira Issue**: TUT-29 +- **Created**: 19/Aug/24 5:33 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Brain Blitz Gen +status: ready +labels: + - other +assignees: + - Ted +--- + +# Brain Blitz Gen + +## Description + +If time permits, can have a model generate questions tailored to specific curriculum, instead of relying on canned questions for the demo. + +## Metadata + +- **Jira Issue**: TUT-28 +- **Created**: 19/Aug/24 5:33 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Auto-Generate Relevant Follow-Ups +status: ready +labels: + - other +assignees: + - Flynn Cruse +--- + +# Auto-Generate Relevant Follow-Ups + +## Description + +If time permits, can have a model generate relevant follow-ups tailored to user entry, instead of relying on canned options for the demo. + +## Metadata + +- **Jira Issue**: TUT-27 +- **Created**: 19/Aug/24 5:33 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Bio Tutor AI +status: ready +labels: + - other +assignees: + - Flynn Cruse +--- + +# Bio Tutor AI + +## Description + +If time permits, can have a model generate responses tailored to user entry, instead of relying on canned responses for the demo. + +## Metadata + +- **Jira Issue**: TUT-26 +- **Created**: 19/Aug/24 5:32 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: XP Bar +status: ready +labels: + - other +assignees: + - Bennett David +--- + +# XP Bar + +## Description + +Progress bar at top should show amount of questions in blitz worked through, ideally with an XP readout as well. + +## Metadata + +- **Jira Issue**: TUT-23 +- **Created**: 19/Aug/24 5:16 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Brain Blitz Splash +status: ready +labels: + - other +assignees: + - Ted +--- + +# Brain Blitz Splash + +## Description + +Welcome user to the game, and provide buttons for 'PLAY' and 'Try Another Game'. + +## Metadata + +- **Jira Issue**: TUT-22 +- **Created**: 19/Aug/24 5:15 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Qs with T/F Select +status: ready +labels: + - other +assignees: + - Ted +--- + +# Qs with T/F Select + +## Description + +Implement true/false and fill-in-the-blank question interface + +## Metadata + +- **Jira Issue**: TUT-21 +- **Created**: 19/Aug/24 5:15 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Buttons with Responses +status: ready +labels: + - other +--- + +# Buttons with Responses + +## Description + +In the chat tutor interface after the AI gives an explanation for something show a message bubble “is everything clear so far”? Have the user type out the answer to these questions. + +## Metadata + +- **Jira Issue**: TUT-20 +- **Created**: 19/Aug/24 5:01 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Badge Progress Bar +status: ready +labels: + - other +--- + +# Badge Progress Bar + +## Description + +Top bar should also have a bar showing progress towards the next badge. Ideally responds to a user answering a question, or just user asking questions. + +## Metadata + +- **Jira Issue**: TUT-19 +- **Created**: 19/Aug/24 5:00 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Tutor Info / Output Option +status: ready +labels: + - other +assignees: + - Ted +--- + +# Tutor Info / Output Option + +## Description + +In the top bar, the user should be shown the currently selected Subjectname - Tutorname to the right of a circle icon + +There should be a ‘Voice’ button with a drop-down implying multimodal responses. + +## Metadata + +- **Jira Issue**: TUT-18 +- **Created**: 19/Aug/24 4:58 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Basic Chat Interface +status: ready +labels: + - other +assignees: + - Peter Apazidis +--- + +# Basic Chat Interface + +## Description + +The interface by which the user interacts with the AI tutor. Needs to include the speech bubbles for both the AI and the user. When the user types a prompt, the prompt will be converted into a bubble that is right-justified and the text in the input bar will disappear. + +## Metadata + +- **Jira Issue**: TUT-17 +- **Created**: 19/Aug/24 4:57 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: T.S.P. Button(s) +status: ready +labels: + - other +assignees: + - Bennett David +--- + +# T.S.P. Button(s) + +## Description + +‘View More Tutors’, ‘Next’ - 2nd button should lock in tutor selection (go to [https://rightpathai.atlassian.net/browse/CLE-5|https://rightpathai.atlassian.net/browse/CLE-5|smart-link]) + +For Beta, still considering ‘Next’ button at least for user’s first spin-up of app. ‘View More Tutors’ could contain the now moved-away coming soons. + +## Metadata + +- **Jira Issue**: TUT-16 +- **Created**: 19/Aug/24 4:50 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Hover Effect +status: ready +labels: + - other +assignees: + - Bennett David +--- + +# Hover Effect + +## Description + +Implement hover effect on tutor images where on hover the border is blue, and black when not hovered. + +## Metadata + +- **Jira Issue**: TUT-15 +- **Created**: 19/Aug/24 4:49 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Tutor Options +status: ready +labels: + - other +assignees: + - Bennett David +--- + +# Tutor Options + +## Description + +Display six tutor icons with images and names (Math Sophie, Chemistry Ralph, History Antione, Biology Charlotte,Technology Jean, French Marc). When hovered, the outline border of a tutor should be blue, otherwise black. + +All but the top left tutor should be shown as ‘locked’. + +## Metadata + +- **Jira Issue**: TUT-14 +- **Created**: 19/Aug/24 4:48 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Clétude Title/Branding +status: ready +labels: + - other +assignees: + - Bennett David +--- + +# Clétude Title/Branding + +## Description + +Add Clétude branding above login form - in large text over email and password entry points + +## Metadata + +- **Jira Issue**: TUT-13 +- **Created**: 19/Aug/24 4:45 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Character / Background +status: ready +labels: + - other +assignees: + - Bennett David +--- + +# Character / Background + +## Description + +Design and implement character peeking at bottom of page, blue background (nose/ears bisected by page bottom) + +## Metadata + +- **Jira Issue**: TUT-12 +- **Created**: 19/Aug/24 4:45 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Login Form +status: ready +labels: + - other +assignees: + - Bennett David +--- + +# Login Form + +## Description + +Implement login form with email and password fields. When login entered (doesnt need to be valid) switch to [https://rightpathai.atlassian.net/browse/CLE-4|https://rightpathai.atlassian.net/browse/CLE-4|smart-link] + +## Metadata + +- **Jira Issue**: TUT-11 +- **Created**: 19/Aug/24 4:45 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Language Swap +status: ready +labels: + - enhancement +assignees: + - Ted +--- + +# Language Swap + +## Description + +Create a system-wide language switch that affects both UI elements and AI conversation language. Refer to the attached canva as needed. + +## Metadata + +- **Jira Issue**: TUT-10 +- **Created**: 19/Aug/24 4:39 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: AI Demonstration +status: ready +labels: + - enhancement +assignees: + - Ted +--- + +# AI Demonstration + +## Description + +Integrate various AI-powered demonstrations. Refer to the attached canva as needed. With each of these, manual/hard-coded faking possible and quickest, while building out actual functionality would take significantly longer. + +## Metadata + +- **Jira Issue**: TUT-9 +- **Created**: 19/Aug/24 4:38 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Main Sidebar +status: ready +labels: + - enhancement +assignees: + - Peter Apazidis +--- + +# Main Sidebar + +## Description + +Build out a collapsible sidebar for easy navigation and additional features. See any page in canva. The links for the sidebar will *Not* be implemented, and should not navigate anywhere. + +Under ‘Clétude’ should have a few tutors to select from, and ‘Other Tutors’ with a ‘+' profile photo. The next section should have ‘Learning Assessment’, ‘Review’, ‘Games’, ‘Achievements’. The final section should have a ‘Guardian Portal’. + +Icon assets are saved to our shared drive. + +## Metadata + +- **Jira Issue**: TUT-8 +- **Created**: 19/Aug/24 4:38 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Games 2 +status: ready +labels: + - enhancement +assignees: + - Flynn Cruse +--- + +# Games 2 + +## Description + +Create a game for testing user knowledge. See the ‘Brain Blitz’ slides in the attached canva. Expecting to have one working game for beta and ‘Coming Soon’ etc for all other games. + +## Metadata + +- **Jira Issue**: TUT-6 +- **Created**: 19/Aug/24 4:38 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Learning Session Page (Chat 2) +status: ready +labels: + - enhancement +assignees: + - Peter Apazidis +--- + +# Learning Session Page (Chat 2) + +## Description + +Develop the main interface for tutor-student interaction and learning sessions. (Web pgs 3-9 in attached canva) + +## Metadata + +- **Jira Issue**: TUT-5 +- **Created**: 19/Aug/24 4:37 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Tutor Selection +status: ready +labels: + - enhancement +assignees: + - Bennett David +--- + +# Tutor Selection + +## Description + +Create a page where users can select their preferred tutor from various options. For now only the math tutor should be selectable, the others should be shaded out (like lego star wars). See the 2nd page in the linked canva ‘Polished’. + +## Metadata + +- **Jira Issue**: TUT-4 +- **Created**: 19/Aug/24 4:37 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Start Page (Login) +status: ready +labels: + - enhancement +assignees: + - Bennett David +--- + +# Start Page (Login) + +## Description + +Create the initial login page for the Clétude application. See the first page in canva mockup. + +## Metadata + +- **Jira Issue**: TUT-3 +- **Created**: 19/Aug/24 4:37 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Y Comb Video +status: ready +labels: + - other +assignees: + - Max Brie +--- + +# Y Comb Video + +## Description + +Video not planned to show founders, but demo Clétude features using streamlit and premiere. + +## Metadata + +- **Jira Issue**: TUT-2 +- **Created**: 18/Aug/24 7:43 PM +- **Reporter**: Bennett David + +---ISSUE--- + +--- +title: Sprint Roadmap +status: ready +labels: + - other +assignees: + - Bennett David +--- + +# Sprint Roadmap + +## Description + +As a developer, need clear tasking for YComb video deadline (7/27/24). Building up issue library for 7/19 plan + +## Metadata + +- **Jira Issue**: TUT-1 +- **Created**: 18/Aug/24 7:33 PM +- **Reporter**: Bennett David + diff --git a/01-gh-issue-generator/src/main.rs b/01-gh-issue-generator/src/main.rs new file mode 100644 index 0000000..37ff65e --- /dev/null +++ b/01-gh-issue-generator/src/main.rs @@ -0,0 +1,845 @@ +use std::path::{Path, PathBuf}; +use std::fs::{self, File, create_dir_all}; +use std::io::{Write, Read}; +use std::process::Command; + +use anyhow::{Result, Context}; +use chrono::Local; +use clap::Parser; +use dirs::home_dir; +use log::{info, warn, error, debug, trace, LevelFilter}; +use regex::Regex; +use serde::{Deserialize, Serialize}; +use walkdir::WalkDir; + +/// GitHub Issue Generator from Markdown files +/// +/// A tool that generates GitHub issues from structured Markdown files. +/// It parses files with YAML front matter to extract metadata like title, +/// labels, assignees, and other issue properties, then uses the GitHub CLI +/// to create issues with the specified attributes. +#[derive(Parser, Debug)] +#[command( + author, + version, + about, + long_about = "A command-line utility that creates GitHub issues from structured Markdown files. +It parses Markdown files with YAML front matter and uses the GitHub CLI to create issues. + +The tool supports: +- Individual issue files with metadata like title, labels, assignees +- Batch files containing multiple issues +- Parent-child issue relationships +- GitHub project integration +- Draft issues (skipped during creation) +- Detailed reporting + +Requirements: +- GitHub CLI (gh) must be installed and authenticated +- Repository must exist and user must have issue creation permissions" +)] +struct Args { + /// GitHub repository in format owner/repo + /// + /// The target GitHub repository where issues will be created. + /// Format must be 'owner/repo' (e.g., 'octocat/Hello-World'). + /// This can also be set in the configuration file. + #[arg(short, long)] + repo: Option, + + /// Path to markdown file, directory, or multiple file paths + /// + /// One or more paths to: + /// - Individual markdown files + /// - Directories containing markdown files + /// - Batch files with multiple issues + /// + /// All files must have .md or .markdown extension. + #[arg(required = true)] + input_paths: Vec, + + /// Dry run (don't actually create issues) + /// + /// When enabled, the tool will parse files and show what would be created, + /// but won't actually create any issues on GitHub. Useful for testing + /// file formatting and validating inputs before actual creation. + #[arg(short, long)] + dry_run: bool, + + /// Verbosity level (can be used multiple times) + /// + /// Controls the amount of information displayed during execution: + /// -v: Debug level (detailed information for troubleshooting) + /// -vv: Trace level (very verbose, all operations logged) + /// + /// You can also use the RUST_LOG environment variable instead. + #[arg(short, long, action = clap::ArgAction::Count)] + verbose: u8, + + /// Path to config file + /// + /// Path to a TOML configuration file. If not specified, the tool will + /// search for configuration in standard locations: + /// - .gh-issue-generator.toml in current directory + /// - ~/.gh-issue-generator.toml in home directory + /// - ~/.config/gh-issue-generator/config.toml + #[arg(short = 'c', long)] + config: Option, +} + +#[derive(Debug, Serialize, Deserialize)] +struct Config { + /// Default GitHub repository in format owner/repo + default_repo: Option, + + /// Default report output directory + #[serde(default = "default_report_dir")] + report_dir: String, +} + +fn default_report_dir() -> String { + "report".to_string() +} + +impl Default for Config { + fn default() -> Self { + Self { + default_repo: None, + report_dir: default_report_dir(), + } + } +} + +impl Config { + /// Load configuration from file or create default if not exists + fn load(config_path: Option<&PathBuf>) -> Result { + // If path is provided, try to load from there + if let Some(path) = config_path { + debug!("Loading config from specified path: {}", path.display()); + return Self::load_from_file(path); + } + + // Try to load from default locations + let config_paths = [ + // Current directory + PathBuf::from(".gh-issue-generator.toml"), + // Home directory + home_dir().map(|h| h.join(".gh-issue-generator.toml")).unwrap_or_default(), + // XDG config directory + home_dir().map(|h| h.join(".config/gh-issue-generator/config.toml")).unwrap_or_default(), + ]; + + for path in &config_paths { + if path.exists() { + debug!("Found config file at: {}", path.display()); + return Self::load_from_file(path); + } + } + + // No config file found, create default in home directory + debug!("No config file found, using defaults"); + Ok(Self::default()) + } + + /// Load configuration from a specific file + fn load_from_file(path: &Path) -> Result { + let mut file = File::open(path) + .context(format!("Failed to open config file: {}", path.display()))?; + + let mut content = String::new(); + file.read_to_string(&mut content) + .context("Failed to read config file")?; + + toml::from_str(&content) + .context("Failed to parse config file as TOML") + } + + /// Save configuration to file + fn save(&self, path: &Path) -> Result<()> { + debug!("Saving config to: {}", path.display()); + + // Create parent directories if they don't exist + if let Some(parent) = path.parent() { + create_dir_all(parent)?; + } + + let content = toml::to_string_pretty(self) + .context("Failed to serialize config to TOML")?; + + let mut file = File::create(path) + .context(format!("Failed to create config file: {}", path.display()))?; + + file.write_all(content.as_bytes()) + .context("Failed to write config file")?; + + Ok(()) + } + + /// Create a default config file if it doesn't exist + fn create_default_if_not_exists() -> Result<()> { + let default_path = home_dir() + .map(|h| h.join(".config/gh-issue-generator/config.toml")) + .ok_or_else(|| anyhow::anyhow!("Failed to determine home directory"))?; + + if !default_path.exists() { + debug!("Creating default config file at: {}", default_path.display()); + let default_config = Self::default(); + default_config.save(&default_path)?; + info!("Created default config file at: {}", default_path.display()); + println!("Created default config file at: {}", default_path.display()); + } + + Ok(()) + } +} + +/// Issue front matter metadata +#[derive(Debug, Serialize, Deserialize, Clone)] +struct IssueMeta { + /// Issue title + title: String, + + /// Status (draft, ready) + #[serde(default = "default_status")] + status: String, + + /// GitHub project (number or URL) + #[serde(default)] + project: Option, + + /// Issue labels + #[serde(default)] + labels: Vec, + + /// Issue assignees + #[serde(default)] + assignees: Vec, + + /// Parent issue number or URL + #[serde(default)] + parent: Option, + + /// Issue milestone + #[serde(default)] + milestone: Option, +} + +fn default_status() -> String { + "ready".to_string() +} + +/// Result of issue creation +#[derive(Debug)] +struct IssueResult { + filepath: PathBuf, + filename: String, + meta: IssueMeta, + success: bool, + issue_url: Option, + error: Option, +} + +/// Validate repository format (owner/repo) +fn validate_repository_format(repo: &str) -> Result<()> { + debug!("Validating repository format: {}", repo); + + // Check if the repository follows the owner/repo format + let repo_regex = Regex::new(r"^[a-zA-Z0-9_.-]+/[a-zA-Z0-9_.-]+$")?; + + if !repo_regex.is_match(repo) { + let error_msg = format!("Invalid repository format: '{}'. Expected format: 'owner/repo'", repo); + error!("{}", error_msg); + return Err(anyhow::anyhow!(error_msg)); + } + + debug!("Repository format is valid"); + Ok(()) +} + +fn main() -> Result<()> { + let args = Args::parse(); + + // Initialize logger with appropriate level + let log_level = match args.verbose { + 0 => LevelFilter::Info, + 1 => LevelFilter::Debug, + _ => LevelFilter::Trace, + }; + + // Initialize the logger, respecting the RUST_LOG env var if set + let mut builder = env_logger::Builder::new(); + + // If RUST_LOG is set, use that config; otherwise use our default based on -v flags + match std::env::var("RUST_LOG") { + Ok(_) => { + // RUST_LOG is set, initialize with default env_logger behavior + builder.init(); + }, + Err(_) => { + // RUST_LOG not set, use our verbosity flag + builder + .filter_level(log_level) + .format_timestamp(Some(env_logger::fmt::TimestampPrecision::Seconds)) + .init(); + + // Log a hint about RUST_LOG for users who use -v + if args.verbose > 0 { + debug!("Tip: You can also control log level with the RUST_LOG environment variable"); + } + } + }; + + info!("Starting GitHub Issue Generator"); + + // Load configuration + let config = Config::load(args.config.as_ref())?; + debug!("Loaded configuration: {:?}", config); + + // Create default config if it doesn't exist (only in normal operation) + if args.verbose == 0 { + if let Err(e) = Config::create_default_if_not_exists() { + warn!("Failed to create default config file: {}", e); + } + } + + // Determine the repository to use (command line takes precedence over config) + let repo = match (args.repo, &config.default_repo) { + (Some(r), _) => r, + (None, Some(r)) => { + info!("Using repository from config: {}", r); + r.clone() + }, + (None, None) => { + let error_msg = "No repository specified. Use --repo option or set default_repo in config file."; + error!("{}", error_msg); + return Err(anyhow::anyhow!(error_msg)); + } + }; + + debug!("Using repository: {}", repo); + debug!("Dry run: {}", args.dry_run); + debug!("Input paths: {:?}", args.input_paths); + + // Validate repository format + validate_repository_format(&repo)?; + + // Check if gh CLI is installed + check_gh_cli()?; + + // Get list of all files to process + let files = collect_markdown_files(&args.input_paths)?; + info!("Found {} markdown files to process", files.len()); + + // Process each file + let mut results = Vec::new(); + for file in files { + match process_file(&file, &repo, args.dry_run) { + Ok(mut file_results) => results.append(&mut file_results), + Err(e) => { + error!("Error processing file {}: {}", file.display(), e); + eprintln!("Error processing file {}: {}", file.display(), e); + } + } + } + + // Create report directory + let timestamp = Local::now().format("%Y-%m-%d-%H-%M").to_string(); + let report_dir = PathBuf::from(format!("{}/{}", config.report_dir, timestamp)); + create_dir_all(&report_dir)?; + debug!("Created report directory: {}", report_dir.display()); + + // Write report + write_report(&report_dir, &results)?; + + // Print summary + let success_count = results.iter().filter(|r| r.success).count(); + info!("Summary: Successfully created {}/{} issues", success_count, results.len()); + println!("\nSummary: Successfully created {}/{} issues", success_count, results.len()); + println!("Report saved to {}", report_dir.display()); + + Ok(()) +} + +/// Check if GitHub CLI is installed and authenticated +fn check_gh_cli() -> Result<()> { + debug!("Checking if GitHub CLI is installed and authenticated"); + + let output = Command::new("gh") + .arg("--version") + .output() + .context("Failed to execute 'gh'. Is GitHub CLI installed?")?; + + if !output.status.success() { + let error_msg = "GitHub CLI check failed. Please install the GitHub CLI ('gh') and authenticate."; + error!("{}", error_msg); + anyhow::bail!(error_msg); + } + + debug!("GitHub CLI is available"); + Ok(()) +} + +/// Collect all markdown files from the provided paths +fn collect_markdown_files(paths: &[PathBuf]) -> Result> { + debug!("Collecting markdown files from input paths"); + let mut files = Vec::new(); + + for path in paths { + if path.is_file() && is_markdown_file(path) { + debug!("Adding file: {}", path.display()); + files.push(path.clone()); + } else if path.is_dir() { + debug!("Scanning directory: {}", path.display()); + for entry in WalkDir::new(path).into_iter().filter_map(|e| e.ok()) { + let entry_path = entry.path(); + if entry_path.is_file() && is_markdown_file(entry_path) { + trace!("Found markdown file: {}", entry_path.display()); + files.push(entry_path.to_path_buf()); + } + } + } + } + + Ok(files) +} + +/// Check if file is a markdown file +fn is_markdown_file(path: &Path) -> bool { + path.extension() + .map(|ext| ext.eq_ignore_ascii_case("md") || ext.eq_ignore_ascii_case("markdown")) + .unwrap_or(false) +} + +/// Process a single markdown file, which may contain multiple issues +fn process_file(filepath: &Path, repo: &str, dry_run: bool) -> Result> { + info!("Processing file: {}", filepath.display()); + + // Read file content + let content = fs::read_to_string(filepath)?; + debug!("File read successfully, content length: {} bytes", content.len()); + + // Check if this is a batch file with multiple issues + if content.contains("---ISSUE---") { + process_batch_file(filepath, &content, repo, dry_run) + } else { + // Process as a single issue file + debug!("Processing as single issue file"); + match process_single_issue(filepath, &content, repo, dry_run) { + Ok(result) => Ok(vec![result]), + Err(e) => { + error!("Failed to process single issue file: {}", e); + Err(e) + } + } + } +} + +/// Process a batch file containing multiple issues +fn process_batch_file(filepath: &Path, content: &str, repo: &str, dry_run: bool) -> Result> { + info!("Processing as batch file with multiple issues"); + + // Split content by issue delimiter + let filename = filepath.file_name().unwrap().to_string_lossy().to_string(); + let issues: Vec<&str> = content.split("---ISSUE---").skip(1).collect(); + info!("Found {} issues in batch file", issues.len()); + + let mut results = Vec::new(); + + // Process each issue + for (index, issue_content) in issues.iter().enumerate() { + let issue_filename = format!("{}-issue-{}", filename, index + 1); + info!("Processing issue {}/{}: {}", index + 1, issues.len(), issue_filename); + + // Parse issue content + match parse_markdown_with_frontmatter(issue_content) { + Ok((meta, body)) => { + // Skip draft issues + if meta.status.to_lowercase() == "draft" { + info!("Skipping draft issue: {}", meta.title); + println!(" Skipping draft issue: {}", meta.title); + results.push(IssueResult { + filepath: filepath.to_path_buf(), + filename: issue_filename, + meta, + success: false, + issue_url: None, + error: Some("Issue marked as draft".to_string()), + }); + continue; + } + + // Create GitHub issue + let result = if dry_run { + info!("[DRY RUN] Would create issue: {}", meta.title); + println!(" [DRY RUN] Would create issue: {}", meta.title); + IssueResult { + filepath: filepath.to_path_buf(), + filename: issue_filename, + meta, + success: true, + issue_url: Some("https://github.com/dry-run/issue/1".to_string()), + error: None, + } + } else { + create_github_issue(filepath, repo, &meta, &body, issue_filename)? + }; + + results.push(result); + }, + Err(e) => { + error!("Error parsing issue {}: {}", index + 1, e); + eprintln!(" Error parsing issue {}: {}", index + 1, e); + results.push(IssueResult { + filepath: filepath.to_path_buf(), + filename: issue_filename, + meta: IssueMeta { + title: format!("Failed to parse issue #{}", index + 1), + status: "error".to_string(), + project: None, + labels: Vec::new(), + assignees: Vec::new(), + parent: None, + milestone: None, + }, + success: false, + issue_url: None, + error: Some(format!("Failed to parse issue: {}", e)), + }); + } + } + } + + Ok(results) +} + +/// Process a single issue from a markdown file +fn process_single_issue(filepath: &Path, content: &str, repo: &str, dry_run: bool) -> Result { + // Parse front matter and content + let (meta, body) = parse_markdown_with_frontmatter(content)?; + let filename = filepath.file_name().unwrap().to_string_lossy().to_string(); + + // Skip draft issues + if meta.status.to_lowercase() == "draft" { + println!(" Skipping draft issue: {}", meta.title); + return Ok(IssueResult { + filepath: filepath.to_path_buf(), + filename, + meta, + success: false, + issue_url: None, + error: Some("Issue marked as draft".to_string()), + }); + } + + // Create GitHub issue + let result = if dry_run { + println!(" [DRY RUN] Would create issue: {}", meta.title); + IssueResult { + filepath: filepath.to_path_buf(), + filename, + meta, + success: true, + issue_url: Some("https://github.com/dry-run/issue/1".to_string()), + error: None, + } + } else { + create_github_issue(filepath, repo, &meta, &body, filename)? + }; + + Ok(result) +} + +/// Parse markdown file with YAML front matter +fn parse_markdown_with_frontmatter(content: &str) -> Result<(IssueMeta, String)> { + // Front matter should be at the start of the file between --- delimiters + // Use a more lenient regex that allows whitespace before the start + let front_matter_regex = Regex::new(r"(?s)\s*^---\s*\n(.*?)\n---\s*\n(.*)")?; + + if let Some(captures) = front_matter_regex.captures(content.trim()) { + let front_matter = captures.get(1).unwrap().as_str(); + let body = captures.get(2).unwrap().as_str().trim().to_string(); + + // Parse YAML front matter + let meta: IssueMeta = serde_yaml::from_str(front_matter) + .context("Failed to parse YAML front matter")?; + + Ok((meta, body)) + } else { + anyhow::bail!("No valid front matter found in markdown file") + } +} + +/// Create GitHub issue using gh CLI +fn create_github_issue(filepath: &Path, repo: &str, meta: &IssueMeta, body: &str, filename: String) -> Result { + // Build gh issue create command + let mut cmd = Command::new("gh"); + cmd.arg("issue") + .arg("create") + .arg("--repo") + .arg(repo) + .arg("--title") + .arg(&meta.title) + .arg("--body") + .arg(body); + + // Add labels if present + if !meta.labels.is_empty() { + cmd.arg("--label"); + let labels = meta.labels.join(","); + cmd.arg(labels); + } + + // Add assignees if present + if !meta.assignees.is_empty() { + cmd.arg("--assignee"); + let assignees = meta.assignees.join(","); + cmd.arg(assignees); + } + + // Add milestone if present + if let Some(milestone) = &meta.milestone { + cmd.arg("--milestone"); + cmd.arg(milestone); + } + + // Add project if present + if let Some(project) = &meta.project { + cmd.arg("--project"); + cmd.arg(project); + } + + // Execute command + println!(" Creating issue: {}", meta.title); + let output = cmd.output()?; + + // Process result + if output.status.success() { + let issue_url = String::from_utf8(output.stdout)?.trim().to_string(); + println!(" Created issue: {}", issue_url); + + // Link to parent if specified + if let Some(parent) = &meta.parent { + link_to_parent_issue(repo, &issue_url, parent)?; + } + + Ok(IssueResult { + filepath: filepath.to_path_buf(), + filename, + meta: meta.clone(), + success: true, + issue_url: Some(issue_url), + error: None, + }) + } else { + let error = String::from_utf8(output.stderr)?.trim().to_string(); + eprintln!(" Failed to create issue: {}", error); + + Ok(IssueResult { + filepath: filepath.to_path_buf(), + filename, + meta: meta.clone(), + success: false, + issue_url: None, + error: Some(error), + }) + } +} + +/// Link issue to parent issue using gh cli +fn link_to_parent_issue(repo: &str, issue_url: &str, parent: &str) -> Result<()> { + // Extract issue number from URL + let issue_number = extract_issue_number(issue_url)?; + let parent_issue = if parent.contains('/') { + parent.to_string() + } else { + format!("#{}", parent) + }; + + // Add comment linking to parent + let comment = format!("Child of {}", parent_issue); + + let output = Command::new("gh") + .arg("issue") + .arg("comment") + .arg("--repo") + .arg(repo) + .arg(issue_number) + .arg("--body") + .arg(comment) + .output()?; + + if !output.status.success() { + eprintln!(" Failed to link to parent issue: {}", String::from_utf8(output.stderr)?); + } + + Ok(()) +} + +/// Extract issue number from GitHub issue URL +fn extract_issue_number(url: &str) -> Result { + let re = Regex::new(r"/issues/(\d+)$")?; + if let Some(captures) = re.captures(url) { + Ok(captures.get(1).unwrap().as_str().to_string()) + } else { + Ok(url.trim_start_matches('#').to_string()) + } +} + +/// Write report of processed files +fn write_report(report_dir: &Path, results: &[IssueResult]) -> Result<()> { + // Create summary file + let mut summary = File::create(report_dir.join("summary.md"))?; + writeln!(summary, "# GitHub Issue Creation Report")?; + writeln!(summary, "\nGenerated on: {}\n", Local::now().format("%Y-%m-%d %H:%M:%S"))?; + writeln!(summary, "## Summary")?; + writeln!(summary, "- Total issues processed: {}", results.len())?; + writeln!(summary, "- Successfully created: {}", results.iter().filter(|r| r.success).count())?; + writeln!(summary, "- Failed: {}", results.iter().filter(|r| !r.success).count())?; + + writeln!(summary, "\n## Details")?; + for result in results { + let status = if result.success { "✅" } else { "❌" }; + writeln!(summary, "### {} {}", status, result.meta.title)?; + writeln!(summary, "- File: {} ({})", result.filepath.display(), result.filename)?; + + if let Some(url) = &result.issue_url { + writeln!(summary, "- Issue: {}", url)?; + } + + if let Some(error) = &result.error { + writeln!(summary, "- Error: {}", error)?; + } + + writeln!(summary)?; + } + + // Copy all processed files with results + write_individual_reports(report_dir, results)?; + + // Copy batch files with their content + write_batch_reports(report_dir, results)?; + + Ok(()) +} + +/// Write individual report files for each processed issue +fn write_individual_reports(report_dir: &Path, results: &[IssueResult]) -> Result<()> { + // Group results by filepath + let mut filepath_map: std::collections::HashMap> = std::collections::HashMap::new(); + + for result in results { + let path_str = result.filepath.to_string_lossy().to_string(); + filepath_map.entry(path_str).or_default().push(result); + } + + // Process each filepath + for (path_str, file_results) in filepath_map { + let _path = Path::new(&path_str); + + // Skip batch files - they'll be handled separately + if file_results.len() > 1 && file_results[0].filepath == file_results[1].filepath { + continue; + } + + // Single issue file + if let Some(result) = file_results.first() { + let dest_path = report_dir.join(&result.filename); + + // Read original content + let mut content = fs::read_to_string(&result.filepath)?; + + // Add result information + if !result.success { + content = format!("---\n# FAILED: {}\n---\n\n{}", + result.error.as_deref().unwrap_or("Unknown error"), + content); + } else if let Some(url) = &result.issue_url { + content = format!("---\n# CREATED: {}\n---\n\n{}", url, content); + } + + // Write to report directory + fs::write(dest_path, content)?; + } + } + + Ok(()) +} + +/// Write batch reports for files containing multiple issues +fn write_batch_reports(report_dir: &Path, results: &[IssueResult]) -> Result<()> { + // Group results by filepath + let mut filepath_map: std::collections::HashMap> = std::collections::HashMap::new(); + + for result in results { + let path_str = result.filepath.to_string_lossy().to_string(); + filepath_map.entry(path_str).or_default().push(result); + } + + // Process each filepath with multiple results (batch files) + for (path_str, file_results) in filepath_map { + let path = Path::new(&path_str); + + // Only process batch files (files with multiple issues) + if file_results.len() > 1 && file_results[0].filepath == file_results[1].filepath { + let filename = path.file_name().unwrap().to_string_lossy().to_string(); + let dest_path = report_dir.join(filename); + + // Read original content + let content = fs::read_to_string(path)?; + + // Split by issue delimiter + let mut parts: Vec<&str> = content.split("---ISSUE---").collect(); + + // First part is the file header/intro + let header = parts.remove(0); + + // Create new content with results + let mut new_content = header.to_string(); + + for (part, result) in parts.iter().zip(file_results.iter()) { + let issue_marker = "\n---ISSUE---\n"; + let status_comment = if !result.success { + format!("# FAILED: {}\n", result.error.as_deref().unwrap_or("Unknown error")) + } else if let Some(url) = &result.issue_url { + format!("# CREATED: {}\n", url) + } else { + String::new() + }; + + new_content.push_str(issue_marker); + new_content.push_str(&status_comment); + new_content.push_str(part); + } + + // Write to report directory + fs::write(dest_path, new_content)?; + + // Also create individual files for each issue in the batch + for result in &file_results { + // Parse front matter and content from the original file + let original_content = fs::read_to_string(&result.filepath)?; + let parts: Vec<&str> = original_content.split("---ISSUE---").skip(1).collect(); + + if let Some(part) = parts.get(file_results.iter().position(|r| r.filename == result.filename).unwrap_or(0)) { + let dest_path = report_dir.join(&result.filename); + + // Add result information + let content = if !result.success { + format!("---\n# FAILED: {}\n---\n\n{}", + result.error.as_deref().unwrap_or("Unknown error"), + part) + } else if let Some(url) = &result.issue_url { + format!("---\n# CREATED: {}\n---\n\n{}", url, part) + } else { + part.to_string() + }; + + // Write to report directory + fs::write(dest_path, content)?; + } + } + } + } + + Ok(()) +} diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..fa4137e --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,6 @@ +[workspace] +members = [ + "00-jira-to-gh-issues", + "01-gh-issue-generator", +] +resolver = "2" \ No newline at end of file diff --git a/README.md b/README.md index 6d3813b..36d6a65 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,7 @@ # 2ticketss +This repository contains two complementary command-line tools for GitHub issue management: + +- **00-jira-to-gh-issues**: A Rust tool that converts Jira CSV exports to GitHub issue markdown files compatible with gh-issue-generator. It handles messy CSV data and preserves issue metadata. + +- **01-gh-issue-generator**: A Rust tool that creates GitHub issues from Markdown files with YAML front matter. It parses structured Markdown, supports batch processing, and integrates with GitHub CLI.