{"id":30759210,"url":"https://github.com/panoskoutris/xplore-software-design","last_synced_at":"2026-04-14T06:33:29.920Z","repository":{"id":304990725,"uuid":"1021476554","full_name":"panoskoutris/xplore-software-design","owner":"panoskoutris","description":"Interactive storytelling application designed using a design-first approach with UML diagrams and a fully documented OpenAPI 3.0.4 RESTful API.","archived":false,"fork":false,"pushed_at":"2025-08-17T08:56:41.000Z","size":6670,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-04T12:11:08.405Z","etag":null,"topics":["api-design","class-diagram","educational-app","gherkin","json","json-schema","mockups","open-api","requirements-engineering","rest-api","restful-api","sequence-diagram","software-architecture-and-design","software-engineering","storytelling","swagger","uml-diagrams","use-case-diagram","web-application"],"latest_commit_sha":null,"homepage":"","language":"Gherkin","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/panoskoutris.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,"zenodo":null}},"created_at":"2025-07-17T13:03:03.000Z","updated_at":"2025-08-17T08:56:44.000Z","dependencies_parsed_at":"2025-07-17T21:09:07.090Z","dependency_job_id":null,"html_url":"https://github.com/panoskoutris/xplore-software-design","commit_stats":null,"previous_names":["panoskoutris/xplore-software-design"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/panoskoutris/xplore-software-design","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/panoskoutris%2Fxplore-software-design","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/panoskoutris%2Fxplore-software-design/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/panoskoutris%2Fxplore-software-design/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/panoskoutris%2Fxplore-software-design/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/panoskoutris","download_url":"https://codeload.github.com/panoskoutris/xplore-software-design/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/panoskoutris%2Fxplore-software-design/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31785677,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-14T02:24:21.117Z","status":"ssl_error","status_checked_at":"2026-04-14T02:24:20.627Z","response_time":153,"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":["api-design","class-diagram","educational-app","gherkin","json","json-schema","mockups","open-api","requirements-engineering","rest-api","restful-api","sequence-diagram","software-architecture-and-design","software-engineering","storytelling","swagger","uml-diagrams","use-case-diagram","web-application"],"created_at":"2025-09-04T12:01:48.222Z","updated_at":"2026-04-14T06:33:29.903Z","avatar_url":"https://github.com/panoskoutris.png","language":"Gherkin","funding_links":[],"categories":[],"sub_categories":[],"readme":"﻿#  Xplore Web Application - Software Design\r\n\u003cp align=\"center\"\u003e\r\n  \u003cimg src=\".\\mockups\\xplore-logo.png\" alt=\"xplore-logo\" width=\"200\"/\u003e\r\n\u003c/p\u003e\r\n\r\n##  Overview\r\n\r\n**Xplore** is an educational storytelling web application developed as part of the course **Software Engineering I** at the Aristotle University of Thessaloniki (AUTH), School of Electrical \u0026 Computer Engineering. . Inspired by the graphic novel *\"Ποιός σκότωσε τον κ. Χ;\"*, the platform allows interactive learning through stories, riddles, and character-driven progress.\r\n\r\nThe project follows a **Design-First API** approach and adheres to the **OpenAPI 3.0.4 specification**.\r\n\r\n---\r\n\r\n##  Functional Features\r\n\r\n-  **Gamemaster**: Can browse stories and panels, invite solvers, and add riddles.\r\n-  **Solver**: Accepts invitations and solves riddles.\r\n-  **Story Flow**: Users proceed through stories using narrative panels.\r\n-  **Custom Riddles**: Gamemasters can create or fetch riddles from the database.\r\n\r\n---\r\n\r\n##  Project Deliverables\r\n\r\nThe development of the project followed a structured process organized in **three main deliverables**:\r\n\r\n###  Deliverable 1\r\n\r\n- Collection of **User Requirements**\r\n- Definition of **User Stories**\r\n- Design of **Use Case Diagrams**\r\n- Creation of **Activity Diagrams** for key functionalities\r\n\r\n###  Deliverable 2\r\n\r\n- Design of the **Class Diagrams**\r\n- Implementation of **Sequence Diagrams** to model system interactions\r\n\r\n###  Deliverable 3\r\n\r\n- Definition and implementation of the **RESTful API**\r\n- Documentation of the API using **OpenAPI (Swagger)**\r\n- Organized project structure based on a **Design-First** approach\r\n---\r\n\r\n##  Repository Structure\r\n```\r\nxplore-software-design/\r\n├── diagrams/                             # All UML and structural diagrams\r\n│   ├── activity-diagrams/\r\n│   │   ├── attempt-riddle.png\r\n│   │   ├── choose-riddle.png\r\n│   │   └── enter-storyline.png\r\n│   │\r\n│   ├── class-diagrams/\r\n│   │   ├── account-package.png\r\n│   │   ├── answer-package.png\r\n│   │   ├── full-class-diagram.png\r\n│   │   ├── full-collapsed-class-diagram.png\r\n│   │   ├── hint-package.png\r\n│   │   ├── invitation-package.png\r\n│   │   ├── riddle-package.png\r\n│   │   ├── solver-account-package.png\r\n│   │   └── story-package.png\r\n│   │\r\n│   ├── design-patterns/\r\n│   │   ├── bridge.png\r\n│   │   └── proxy.png\r\n│   │\r\n│   ├── sequence-diagrams/\r\n│   │   ├── attempt-riddle.png\r\n│   │   ├── choose-riddle.png\r\n│   │   └── enter-storyline.png\r\n│   │\r\n│   └── use-case-diagrams/\r\n│       └── use-case-diagram.png\r\n│\r\n├── mockups/                             # UI mockups for key user actions\r\n│   ├── accept-invitation.png\r\n│   ├── answer-riddle-incorrectly.png\r\n│   ├── answer-riddle.png\r\n│   ├── app-logo.png\r\n│   ├── choose-database-riddle-1.png\r\n│   ├── choose-database-riddle-2.png\r\n│   ├── choose-role.png\r\n│   ├── choose-story.png\r\n│   ├── congrats.png\r\n│   ├── create-riddles.png\r\n│   ├── final-story.png\r\n│   ├── hint-page.png\r\n│   ├── homepage-gamemaster.png\r\n│   ├── homepage-solver.png\r\n│   ├── log-in.png\r\n│   ├── riddle-options.png\r\n│   ├── sign-up.png\r\n│   ├── story-panel.png\r\n│   └── xplore-logo.png\r\n│\r\n├── swagger/                             # Design-First API specification\r\n│   ├── api.json\r\n│   └── components.json\r\n│\r\n├── user-stories/                        # Gherkin-style user story features\r\n│   ├── attempt_riddle.feature\r\n│   ├── choose_riddle.feature\r\n│   └── enter_story.feature\r\n│\r\n└── README.md\r\n\r\n\r\n```\r\n\r\n---\r\n\r\n##  API Specification\r\n\r\nThe full OpenAPI spec is defined in [`initial.json`](./initial.json), describing endpoints such as:\r\n\r\n- `POST /user`: Create new user (solver or gamemaster)\r\n- `GET /user/{id}/story/{story-id}/panel`: View panels\r\n- `PUT /user/{id}/invitation/{invitation-id}`: Respond to invitations\r\n- `POST /user/{id}/story/{story-id}/riddle`: Add custom riddles\r\n- `GET /user/{id}/answer`: Retrieve answers by solvers\r\n\r\n\r\n---\r\n\r\n##  Technologies Used\r\n\r\n- **OpenAPI 3.0.4**\r\n- **Swagger UI / Editor**\r\n- **JSON/YAML Schema Design**\r\n- **UML Diagrams** (Activity, Class, Use Case)\r\n\r\n---\r\n\r\n##  Authors\r\n\r\n- Team: Xplore API Team\r\n\r\n---\r\n\r\n##  License\r\n\r\nLicensed under the [Apache 2.0 License](https://www.apache.org/licenses/LICENSE-2.0.html).\r\n\r\n\r\n\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpanoskoutris%2Fxplore-software-design","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpanoskoutris%2Fxplore-software-design","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpanoskoutris%2Fxplore-software-design/lists"}