{"id":19509923,"url":"https://github.com/dattali18/ux-prototype","last_synced_at":"2025-10-29T08:07:26.223Z","repository":{"id":195709168,"uuid":"692837526","full_name":"dattali18/UX-Prototype","owner":"dattali18","description":"This project is a UX prototype for a course management application. The prototype is designed to be easy to use and navigate, and it provides a variety of features for managing courses and semesters.","archived":false,"fork":false,"pushed_at":"2023-11-02T19:45:46.000Z","size":64444,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-08-22T07:49:03.853Z","etag":null,"topics":["ios","ios-development","mvc","mvvm","swift","swiftui","uikit","ux-design"],"latest_commit_sha":null,"homepage":"","language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dattali18.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2023-09-17T18:24:48.000Z","updated_at":"2024-11-29T07:10:07.000Z","dependencies_parsed_at":"2023-10-03T23:58:59.150Z","dependency_job_id":"5cd55e49-3fff-4d31-93b9-e6d4ec56765a","html_url":"https://github.com/dattali18/UX-Prototype","commit_stats":null,"previous_names":["dattali18/ux-prototype"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/dattali18/UX-Prototype","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dattali18%2FUX-Prototype","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dattali18%2FUX-Prototype/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dattali18%2FUX-Prototype/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dattali18%2FUX-Prototype/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dattali18","download_url":"https://codeload.github.com/dattali18/UX-Prototype/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dattali18%2FUX-Prototype/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":281584984,"owners_count":26526172,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-29T02:00:06.901Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["ios","ios-development","mvc","mvvm","swift","swiftui","uikit","ux-design"],"created_at":"2024-11-10T23:13:55.132Z","updated_at":"2025-10-29T08:07:26.172Z","avatar_url":"https://github.com/dattali18.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"# UX-Prototype\n\n## Overview\nThis project is a UX prototype for a course management application. The prototype is designed to be easy to use and navigate, and it provides a variety of features for managing courses and semesters.\n\nThis project was inspired by a course in `UX`/`UI` design, in which we had to present a prototype of an original app idea. This is the real-life project built from that prototype\n\n## Technologies Used\n\n* `Swift`: The prototype is written in `Swift`, which is a modern programming language developed by Apple. `Swift` is known for its speed, performance, and safety.\n* `UIKit:` The app uses `UIKit`, which is Apple's framework for developing user interfaces for `iOS` applications. `UIKit` provides a variety of controls and views that can be used to create complex and interactive user interfaces.\n* `SwiftUI`: The app uses `SwiftUI`, wich is Apple's framwork for develping user iterfaces for `iOS` applications.\n* `Model-View-Controller (MVC)` : The prototype follows the `Model-View-Controller (MVC)` design pattern. `MVC` is a design pattern that separates the user interface, the data model, and the application logic into three separate components. This makes the code more modular and easier to maintain.\n* `CalendarKit` a framwork used in the calendar tab for creating editing and deleting event.\n* `CoreData` Apple's framwork to have persistante data, please see the `COREDATA.md` file to see the data structure for the project.\n\n## Features\n\nThe course management application offers a range of features to help students manage their courses and semesters effectively:\n\n1. **Course and Semester Management:**\n   - Create new courses and semesters effortlessly by tapping the plus button in the navigation bar. Fill out the necessary details in a form and save.\n   - Edit existing courses and semesters with ease. Simply swipe left and click the edit button. You can modify course or semester details and save your changes.\n   - Delete unwanted courses directly from the list by swiping left.\n\n2. **Filter Courses:**\n   - Quickly find the courses you're looking for using the filter feature. Filter by semester or view all courses. Access the filter button on the left side of the navigation bar in the CourseVC view.\n\n3. **Assignment Management:**\n   - Assignments are seamlessly linked to courses and categorized as \"Homework,\" \"Midterm,\" \"Final,\" or \"Others.\"\n   - Create assignments with the option to add events, which are also viewable in your iPhone calendar as well as within the app's calendar.\n\n4. **Resource Handling:**\n   - Add resources associated with your courses, including a name, description, and links to online resources. While the app doesn't handle files, it allows you to organize and access online materials.\n\n5. **GitHub Integration:**\n   - The ProjectsVC feature allows you to create and manage projects. You can specify project details like name and URL and link them to specific courses.\n   - In the ProjectView, you can view the last five commits on the GitHub repository if it's public.\n\n## Core Data\n\n```mermaid\nclassDiagram\n\nSemester  \u003c|--  Course\nCourse  \u003c|--  Assignment\nCourse  \u003c|--  Project\nCourse  \u003c|--  GradeItem\nCourse  \u003c|--  Resource\nResource  \u003c|--  Link\n\nclass Course {\n  + credits: Float?\n  + id: UUID\n  + name: String?\n  + number: Int32?\n  + assignments: [Assignment]\n  + projects: [Project]\n  + resources: [Resource]\n  + gradeItem: [GradeItem]\n  + semester: Semester?\n}\n\nclass Assignment {\n  + name: String?\n  + descriptions: String?\n  + due: Date?\n  + id: UUID\n  + importance: Int32\n  + type: String?\n  + course: Course\n}\n\nclass Project {\n  + icon: String?\n  + id: UUID\n  + url: String?\n  + name: String\n  + number: Int32\n  + course: Course\n}\n\nclass Resource {\n  + descriptions: String?\n  + id: UUID\n  + name: String\n  + course: Course\n  + links: [Link]\n}\n\nclass Link {\n  + name: String?\n  + url: String?\n  + resource: Resource\n}\n\nclass Semester {\n  + end: Date?\n  + id: UUID\n  + start: Date?\n  + name: String?\n  + type: String?\n  + courses: [Course]\n}\n\nclass GradeItem {\n+ id: UUID\n+ name: String?\n+ weight: Float?\n+ grade: Float?\n}\n```\n\n\n## Data Flow (IA - Information Arcitecture)\n\n```mermaid\ngraph LR\n\nMain[Main Tab Bar] --\u003e Courses((Courses))\nMain --\u003e Assignment((Assignment))\nMain --\u003e Project((Projects))\n\nCourses --\u003e AddCourse{Edit/Add Course}\nCourses --\u003e AddSemester{Edit/Add Semester}\nCourses --\u003e InfoCourse{Course Info}\nCourses --\u003e InfoSemester{Semester Info}\n\nInfoCourse --\u003e Resources((Resources))\n\nResources --\u003e AddResource{Edit/Add Resources}\n\nAssignment --\u003e AddAssignment{Edit/Add Assignment}\nAssignment --\u003e InfoAssignment{Assignment Info}\n\nProject --\u003e AddProject{Edit/Add Project}\nProject --\u003e InfoProject{Project Info}\n```\n\n## Installation\n\nTo install the prototype, simply clone the repository and open the project in Xcode.\n\n## Usage\n\nTo install the prototype, simply clone the repository and open the project in `Xcode`. run the application on an `iOS` device. The prototype will open to a list of all courses and semesters. You can tap on a course or semester to view its details.\n\nTo add a new course or semester, tap on the `+` button in the top right corner of the screen. To edit or delete a course or semester, swipe left on the course or semester and tap on the `Edit` or `Delete` button.\n\n## Author\n\nI am Daniel Attali, a third-year Software Engineering `B.Sc`. student at `JCT` (Jerusalem College of Technology). I am passionate about learning and building innovative and user-friendly software applications. I have experience in a variety of programming languages and technologies, including `Swift`, `UIKit`, and the Model-View-Controller (`MVC`) design pattern. I am also interested in `machine learning` and `artificial intelligence`.\n\nI am a highly motivated and skilled individual with a strong work ethic. I am eager to learn and grow, and I am always looking for new challenges. I am confident that my skills and experience will make me a valuable asset to any team.\n\nPlease contact me if you have any question about the project or me.\n\n## Screenshots\n\n### Course/Semester + Resource\n\n**Filtering course by semesters**\n\n\u003cimg height=\"400\" src=\"/UX-Prototype/ScreenShot/fillteringCourses.PNG\"\u003e\u003cimg height=\"400\" src=\"/UX-Prototype/ScreenShot/fillteringCoursesD.PNG\"\u003e\n\n**Course Info**\n\n\u003cimg height=\"400\" src=\"/UX-Prototype/ScreenShot/courseInfo.PNG\"\u003e\u003cimg height=\"400\" src=\"/UX-Prototype/ScreenShot/courseInfoD.PNG\"\u003e\n\n**Editing course**\n\n\u003cimg height=\"400\" src=\"/UX-Prototype/ScreenShot/editCourse.PNG\"\u003e\u003cimg height=\"400\" src=\"/UX-Prototype/ScreenShot/editCourseD.PNG\"\u003e\n\n**Adding course**\n\n\u003cimg height=\"400\" src=\"/UX-Prototype/ScreenShot/addCourse.PNG\"\u003e\u003cimg height=\"400\" src=\"/UX-Prototype/ScreenShot/addCourseD.PNG\"\u003e\n\n**Swipe Action course**\n\n\u003cimg height=\"400\" src=\"/UX-Prototype/ScreenShot/deletingCourse.PNG\"\u003e\u003cimg height=\"400\" src=\"/UX-Prototype/ScreenShot/deletingCourseD.PNG\"\u003e\n\n\u003cimg height=\"400\" src=\"/UX-Prototype/ScreenShot/editingCourse.PNG\"\u003e\u003cimg height=\"400\" src=\"/UX-Prototype/ScreenShot/editingCourseD.PNG\"\u003e\n\n**Adding Grade** \n\n\u003cimg height=\"400\" src=\"/UX-Prototype/ScreenShot/addingGrade.PNG\"\u003e\u003cimg height=\"400\" src=\"/UX-Prototype/ScreenShot/addingGradeD.PNG\"\u003e\n\n**Editing Grade**\n\n\u003cimg height=\"400\" src=\"/UX-Prototype/ScreenShot/editingGrade.PNG\"\u003e\u003cimg height=\"400\" src=\"/UX-Prototype/ScreenShot/editingGradeD.PNG\"\u003e\n\n**Deleting Grade**\n\n\u003cimg height=\"400\" src=\"/UX-Prototype/ScreenShot/deletingGrade.PNG\"\u003e\u003cimg height=\"400\" src=\"/UX-Prototype/ScreenShot/deletingGradeD.PNG\"\u003e\n\n**Semester Info** \n\n\u003cimg height=\"400\" src=\"/UX-Prototype/ScreenShot/semesterInfo.PNG\"\u003e\u003cimg height=\"400\" src=\"/UX-Prototype/ScreenShot/semesterInfoD.PNG\"\u003e\n\n**Editing semester**\n\n\u003cimg height=\"400\" src=\"/UX-Prototype/ScreenShot/editSemester.PNG\"\u003e\u003cimg height=\"400\" src=\"/UX-Prototype/ScreenShot/editSemesterD.PNG\"\u003e\n\n\n**Adding semester**\n\n\u003cimg height=\"400\" src=\"/UX-Prototype/ScreenShot/addSemester.PNG\"\u003e\u003cimg height=\"400\" src=\"/UX-Prototype/ScreenShot/addSemesterD.PNG\"\u003e\n\n\n**Resources list**\n\n\u003cimg height=\"400\" src=\"/UX-Prototype/ScreenShot/resources.PNG\"\u003e\u003cimg height=\"400\" src=\"/UX-Prototype/ScreenShot/resourcesD.PNG\"\u003e\n\n**Editing resource**\n\n\u003cimg height=\"400\" src=\"/UX-Prototype/ScreenShot/editResource.PNG\"\u003e\u003cimg height=\"400\" src=\"/UX-Prototype/ScreenShot/editResourceD.PNG\"\u003e\n\n**Editing Link**\n\n\u003cimg height=\"400\" src=\"/UX-Prototype/ScreenShot/editingLink.PNG\"\u003e \u003cimg height=\"400\" src=\"/UX-Prototype/ScreenShot/editingLinkD.PNG\"\u003e\n\n**Editing Link Alert**\n\n\u003cimg height=\"400\" src=\"/UX-Prototype/ScreenShot/editingAlert.PNG\"\u003e\u003cimg height=\"400\" src=\"/UX-Prototype/ScreenShot/editingAlertD.PNG\"\u003e\n\n### Assigments\n\n**Filtering assignmetn by type**\n\n\u003cimg height=\"400\" src=\"/UX-Prototype/ScreenShot/fillteringAssignment.PNG\"\u003e\u003cimg height=\"400\" src=\"/UX-Prototype/ScreenShot/fillteringAssignmentD.PNG\"\u003e\n\n**Assignment List**\n\n\u003cimg height=\"400\" src=\"/UX-Prototype/ScreenShot/assignments.PNG\"\u003e\u003cimg height=\"400\" src=\"/UX-Prototype/ScreenShot/assignmentsD.PNG\"\u003e\n\n**Adding assignment**\n\n\u003cimg height=\"400\" src=\"/UX-Prototype/ScreenShot/addAssignmant.PNG\"\u003e\u003cimg height=\"400\" src=\"/UX-Prototype/ScreenShot/addAssignmantD.PNG\"\u003e\n\n**Compelting assignmet**\n\n\u003cimg height=\"400\" src=\"/UX-Prototype/ScreenShot/completingAssignment.PNG\"\u003e\u003cimg height=\"400\" src=\"/UX-Prototype/ScreenShot/completingAssignmentD.PNG\"\u003e\n\n**Uncompleting assignment**\n\n\u003cimg height=\"400\" src=\"/UX-Prototype/ScreenShot/uncompletingAssignment.PNG\"\u003e\u003cimg height=\"400\" src=\"/UX-Prototype/ScreenShot/uncompletingAssignmentD.PNG\"\u003e\n\n**Swipe Action resources**\n\n\u003cimg height=\"400\" src=\"/UX-Prototype/ScreenShot/editingAssignment.PNG\"\u003e\u003cimg height=\"400\" src=\"/UX-Prototype/ScreenShot/editingAssignmentD.PNG\"\u003e\n\n\n### Calendar\n\n**creating a calendar event**\n\n\u003cimg height=\"400\" src=\"/UX-Prototype/ScreenShot/addEvent.PNG\"\u003e\u003cimg height=\"400\" src=\"/UX-Prototype/ScreenShot/addEventD.PNG\"\u003e\n\n**Seeing calendar event**\n\n\u003cimg height=\"400\" src=\"/UX-Prototype/ScreenShot/calendar.PNG\"\u003e\u003cimg height=\"400\" src=\"/UX-Prototype/ScreenShot/calendarD.PNG\"\u003e\n\n**Event details in the calendar**\n\n\u003cimg height=\"400\" src=\"/UX-Prototype/ScreenShot/editEvent.PNG\"\u003e\u003cimg height=\"400\" src=\"/UX-Prototype/ScreenShot/editEventD.PNG\"\u003e\n\n\n## Projects\n\n**Projects list**\n\n\u003cimg height=\"400\" src=\"/UX-Prototype/ScreenShot/projects.PNG\"\u003e\u003cimg height=\"400\" src=\"/UX-Prototype/ScreenShot/projectsD.PNG\"\u003e\n\n**Adding project**\n\n\u003cimg height=\"400\" src=\"/UX-Prototype/ScreenShot/addProject.PNG\"\u003e\u003cimg height=\"400\" src=\"/UX-Prototype/ScreenShot/addProjectD.PNG\"\u003e\n\n**Editing project**\n\n\u003cimg height=\"400\" src=\"/UX-Prototype/ScreenShot/editProject.PNG\"\u003e\u003cimg height=\"400\" src=\"/UX-Prototype/ScreenShot/editProjectD.PNG\"\u003e\n\n**Swipe Action project**\n\n\u003cimg height=\"400\" src=\"/UX-Prototype/ScreenShot/editingProject.PNG\"\u003e\u003cimg height=\"400\" src=\"/UX-Prototype/ScreenShot/editingProjectD.PNG\"\u003e\n\n\u003cimg height=\"400\" src=\"/UX-Prototype/ScreenShot/deletingProject.PNG\"\u003e\u003cimg height=\"400\" src=\"/UX-Prototype/ScreenShot/deletingProjectD.PNG\"\u003e\n\n**Seeing last 5 commits on project**\n\n\u003cimg height=\"400\" src=\"/UX-Prototype/ScreenShot/projectView.PNG\"\u003e\u003cimg height=\"400\" src=\"/UX-Prototype/ScreenShot/projectViewD.PNG\"\u003e\n\n**Commits loading**\n\n\u003cimg height=\"400\" src=\"/UX-Prototype/ScreenShot/projectLoading.PNG\"\u003e\u003cimg height=\"400\" src=\"/UX-Prototype/ScreenShot/projectLoadingD.PNG\"\u003e\n\n## Conclusion\n\nThis UX prototype is a valuable tool for designing and developing a course management application. The prototype is easy to use and navigate, and it provides a variety of features for managing courses and semesters.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdattali18%2Fux-prototype","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdattali18%2Fux-prototype","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdattali18%2Fux-prototype/lists"}