{"id":45182648,"url":"https://github.com/berkeley-cdss/flextensions","last_synced_at":"2026-02-25T05:18:11.688Z","repository":{"id":276852616,"uuid":"750579646","full_name":"berkeley-cdss/flextensions","owner":"berkeley-cdss","description":"Easy assignment extension management and API for UC Berkeley students","archived":false,"fork":false,"pushed_at":"2026-02-20T08:17:07.000Z","size":14762,"stargazers_count":2,"open_issues_count":72,"forks_count":7,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-02-20T12:47:34.575Z","etag":null,"topics":["education","rails"],"latest_commit_sha":null,"homepage":"https://flextensions.berkeley.edu","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-2-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/berkeley-cdss.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-01-30T22:50:29.000Z","updated_at":"2026-02-20T08:08:54.000Z","dependencies_parsed_at":"2025-02-10T20:25:52.708Z","dependency_job_id":"c29e2ad3-7b64-439d-bd7d-a4d47d961091","html_url":"https://github.com/berkeley-cdss/flextensions","commit_stats":null,"previous_names":["saasbook/flextensions","berkeley-cdss/flextensions"],"tags_count":13,"template":false,"template_full_name":null,"purl":"pkg:github/berkeley-cdss/flextensions","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/berkeley-cdss%2Fflextensions","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/berkeley-cdss%2Fflextensions/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/berkeley-cdss%2Fflextensions/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/berkeley-cdss%2Fflextensions/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/berkeley-cdss","download_url":"https://codeload.github.com/berkeley-cdss/flextensions/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/berkeley-cdss%2Fflextensions/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29811531,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-25T03:30:18.102Z","status":"ssl_error","status_checked_at":"2026-02-25T03:30:17.799Z","response_time":61,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["education","rails"],"created_at":"2026-02-20T10:01:38.917Z","updated_at":"2026-02-25T05:18:11.681Z","avatar_url":"https://github.com/berkeley-cdss.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"# [Flextensions](https://flextensions.berkeley.edu)\n---\n\n[![Maintainability](https://qlty.sh/gh/berkeley-cdss/projects/flextensions/maintainability.svg)](https://qlty.sh/gh/berkeley-cdss/projects/flextensions) •\n[![Code Coverage](https://qlty.sh/gh/berkeley-cdss/projects/flextensions/coverage.svg)](https://qlty.sh/gh/berkeley-cdss/projects/flextensions) •\n[![RSpec Tests](https://github.com/berkeley-cdss/flextensions/actions/workflows/rspec.yml/badge.svg)](https://github.com/berkeley-cdss/flextensions/actions/workflows/rspec.yml) •\n[![Cucumber Tests](https://github.com/berkeley-cdss/flextensions/actions/workflows/cucumber.yml/badge.svg)](https://github.com/berkeley-cdss/flextensions/actions/workflows/cucumber.yml) •\n[![Accessibility Tests](https://github.com/berkeley-cdss/flextensions/actions/workflows/a11y.yml/badge.svg)](https://github.com/berkeley-cdss/flextensions/actions/workflows/a11y.yml) •\n[![RuboCop](https://github.com/berkeley-cdss/flextensions/actions/workflows/rubocop.yml/badge.svg)](https://github.com/berkeley-cdss/flextensions/actions/workflows/rubocop.yml)\n\n---\n\n## [cs169/flextensions](https://github.com/cs169/flextensions)\n[![Maintainability](https://api.codeclimate.com/v1/badges/8d99ec9a1784ddba34ac/maintainability)](https://codeclimate.com/github/cs169/flextensions/maintainability)\n[![Test Coverage](https://api.codeclimate.com/v1/badges/8d99ec9a1784ddba34ac/test_coverage)](https://codeclimate.com/github/cs169/flextensions/test_coverage)\n[![All Specs](https://github.com/cs169/flextensions/actions/workflows/main.yml/badge.svg)](https://github.com/cs169/flextensions/actions/workflows/main.yml)\n[![Accessibility Tests](https://github.com/cs169/flextensions/actions/workflows/a11y.yml/badge.svg)](https://github.com/cs169/flextensions/actions/workflows/a11y.yml)\n[![RuboCop](https://github.com/cs169/flextensions/actions/workflows/rubocop.yml/badge.svg)](https://github.com/cs169/flextensions/actions/workflows/rubocop.yml)\n\n---\n### **Flextensions** is a web application built for UC Berkeley students and course staff to manage assignment extensions across all their bCourses (Canvas) courses.\n#### To use Flextensions, visit [https://flextensions.berkeley.edu](https://flextensions.berkeley.edu).\n\n\n---\n\n## Made for UC Berkeley By UC Berkeley\nFlextensions is a project developed by the UC Berkeley Computer Science 169L course (Software Engineering). The goal of Flextensions is to provide a user-friendly interface for managing assignment extensions, making it easier for both students and instructors to keep track of deadlines and extensions.\nThe project is open-source and available on GitHub, allowing for contributions and improvements from the community. The Flextensions team consists of students from the course, who have worked together to design, develop, and deploy the application.\n\nFlextensions is designed specifically for the UC Berkeley academic environment. It integrates directly with bCourses and provides a seamless way for instructors and students to manage and track assignment extensions.\n\n\n---\n\n\n## Documentation\nOur documentation provides detailed instructions on how to set up, use, and contribute to Flextensions.\nFor the full documentation, visit the public **[Flextensions Docs](https://berkeley-cdss.github.io/flextensions)**. (Or read `/docs/` in this repository.)\n\nBelow are the key resources available:\n- **[Developer Resources](https://berkeley-cdss.github.io/flextensions/developers)**: Information on environment variables, database setup, and deployment.\n- **[Instructor Guide](https://berkeley-cdss.github.io/flextensions/instructors)**: A comprehensive guide for instructors on how to use Flextensions.\n- **[Student Guide](https://berkeley-cdss.github.io/flextensions/students)**: A comprehensive guide for students on how to use Flextensions.\n- **[API Documentation](https://github.com/saasbook/esaas-swagger)**: Details on the APIs used for integration with bCourses (Canvas).\n\n---\n\n## Features\n\n### For Course Staff:\n- View and manage extension requests for all assignments in your course\n- Grant extensions to students with a few clicks\n- Monitor extension usage across your course\n- Automate approving extension requests and sending email notifications\n\n### For Students:\n- View all your granted extensions in one place\n- See how long your extension lasts and when the new due date is\n- Stay informed and organized without checking multiple systems\n\n---\n\n## How It Works\n\nFlextensions connects directly with bCourses (Canvas) and imports your assignments. The interface is intuitive and role-based—course staff can grant and manage, while students can view.\n\n---\n\n# Configuration\n\nPlease see `.env.example` for the environment variables that need to be set up for Flextensions to run. You can copy this file to `.env` and fill in the required values.\n\n## Canvas Scoped Keys\n\nThis deserves brief special mention. You must keep the Canvas API configuration (in Canvas) in sync with the list of scopes defined in the CanvasFacade. If you need to add a new scope, you will need to update the Canvas API configuration in the Canvas Developer Keys section **and will need to coordinate with the bCourses team to ensure the new scope is approved and turned on before deploying it to production**.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fberkeley-cdss%2Fflextensions","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fberkeley-cdss%2Fflextensions","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fberkeley-cdss%2Fflextensions/lists"}