{"id":19957355,"url":"https://github.com/kharzixen/memorio","last_synced_at":"2026-04-13T05:49:30.969Z","repository":{"id":247411836,"uuid":"666370701","full_name":"Kharzixen/Memorio","owner":"Kharzixen","description":"Memorio is a social media-like application where users can create posts, follow other users, and check their posts. The main feature of Memorio is to enable users to create public and private shared galleries, where they can add other users and upload common memories like hiking trips and more.","archived":false,"fork":false,"pushed_at":"2024-09-05T07:22:49.000Z","size":7291,"stargazers_count":0,"open_issues_count":2,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-03T22:44:14.918Z","etag":null,"topics":["dart","debezium","flutter","kafka","microservice","mysql","spring","spring-cloud","transactional-outbox-pattern"],"latest_commit_sha":null,"homepage":"","language":"Dart","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/Kharzixen.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-07-14T10:48:38.000Z","updated_at":"2024-09-05T07:22:53.000Z","dependencies_parsed_at":"2025-01-12T07:12:22.286Z","dependency_job_id":"9243c2ca-588f-4101-a9ae-c096a3c63c78","html_url":"https://github.com/Kharzixen/Memorio","commit_stats":null,"previous_names":["kharzixen/memoio","kharzixen/memorio"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Kharzixen/Memorio","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kharzixen%2FMemorio","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kharzixen%2FMemorio/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kharzixen%2FMemorio/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kharzixen%2FMemorio/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Kharzixen","download_url":"https://codeload.github.com/Kharzixen/Memorio/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kharzixen%2FMemorio/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31741541,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-13T05:13:27.074Z","status":"ssl_error","status_checked_at":"2026-04-13T05:13:25.150Z","response_time":93,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: 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":["dart","debezium","flutter","kafka","microservice","mysql","spring","spring-cloud","transactional-outbox-pattern"],"created_at":"2024-11-13T01:37:39.492Z","updated_at":"2026-04-13T05:49:30.950Z","avatar_url":"https://github.com/Kharzixen.png","language":"Dart","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Memorio - An application for sharing memories\n\n\u003e [!WARNING]\n\u003e  Due to the tight deadline this software is yet unfinished. Currently rewriting the Flutter frontend, and fixing the code quality on backend. \n\u003e \u003cdetails\u003e\n\u003e \u003cbr\u003e\n\u003e Please be aware that this project is currently in an unfinished state and may have incomplete features or issues. While we are actively working on it, there might be bugs, missing functionality, or unpolished areas. \n\u003e \u003cbr\u003e\u003cbr\u003e\n\u003e If you encounter any issues, have feedback, or want to provide tips or suggestions for improvement, we welcome your input. Feel free to reach out to us at `mellau.mark12@gmail.com` with your feedback and concerns. Your input will be greatly appreciated in helping us improve this project.\n\u003e \u003c/details\u003e\n\n\nMemorio is a social media-like application where users can create posts, follow other users, and check their posts. The main feature of Memorio is to enable users to create public and private shared galleries, where they can add other users and upload common memories like hiking trips and more.\n\n## Features\n\n- **User Registration and Authentication**: Sign up and log in to access the platform.\n- **Create Posts**: Share your thoughts and experiences with your followers.\n- **Follow Users**: Follow other users to see their posts in your feed.\n- **Shared Galleries**: Create public and private galleries to share photos and memories with friends.\n- **User Profiles**: View and edit your profile, and view other users' profiles.\n\n## Screenshots and demo video link\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"images/landing-page(1).png\" alt=\"Description of Image 2\" width=\"200\" style=\"vertical-align:top; margin-right: 10px;\"\u003e\n  \u003cimg src=\"images/profile_page.png\" alt=\"Description of Image 1\" width=\"200\" style=\"vertical-align:top; margin-right: 10px;\"\u003e\n  \u003cimg src=\"images/single_album_page.png\" alt=\"Description of Image 2\" width=\"200\" style=\"vertical-align:top; margin-right: 10px;\"\u003e\n  \u003cimg src=\"images/post-page(1).png\" alt=\"Description of Image 3\" width=\"200\" style=\"vertical-align:top;\"\u003e\n\u003c/p\u003e\n\n### Demo video link (Google Drive): https://drive.google.com/file/d/1zj9dLYVvDHTiGa4Lkk7vVLXui7zm3-as/view?usp=sharing \n\n## How to Deploy\n\nFollow these steps to deploy the application:\n\n### Prerequisites\n- Ensure you have the following tools installed:\n  - Java and Maven (`mvn`)\n  - Docker and Docker Compose\n  - (Windows users) **Git Bash** for executing shell scripts.\n\n### Deployment Steps\n\n1. **Build the Project**  \n   Navigate to the project directory and run the following Maven command to clean and package the project: \u003cbr\u003e\n  `mvn clean package`\n\n3. **Start Docker Containers**  \n    Use Docker Compose to bring up all the necessary containers: \u003cbr\u003e\n    `docker-compose up` \u003cbr\u003e\n    \n    **Note**: Some service containers might fail to initially start, please restart those.\n   \n4. **(For Windows Users) Open Git Bash**  \n   If you're on Windows, ensure you're running the following command inside **Git Bash** to support shell scripts. \u003cbr\u003e\n   \n   To open Git Bash open a command promt and type **bash** \n\n6. **Run Deployment Script**  \n   Once all Docker containers are up and running successfully, execute the following script to deploy the Debezium connectors: \u003cbr\u003e\n   `./deploy_connectors.sh`\n\n### Additional Notes\n- You can check the status of the Docker containers by running: `docker ps`\n- Ensure all containers are healthy before proceeding to run the `deploy_connectors.sh` script.\n\n\n## Technical Details\n\n### Microservice Architecture\n\nMemorio is built using a microservice architecture, which allows for modularity, scalability, and maintainability. Each microservice is responsible for a specific business function and communicates with other microservices through well-defined APIs.\n\n  - **User Service:** Handles user registration, authentication, and profile management.\n  - **Post Service:** Manages the creation, retrieval, and deletion of posts.\n  - **Public Album Service:** Facilitates the creation and management of shared galleries.\n  - **Private Album Service** Sends notifications to users about relevant events (e.g., new followers, new posts in followed galleries).\n  - **Authentication Service**\n  - **Api Gateway**\n  - **Discovery Server**\n  - [...]\n\n  \u003cp align=\"center\"\u003e\n    \u003cimg src=\"images/Architecture(1).png\" alt=\"Description of Image 2\" width=\"800\" height=\"500\" align=\"center\" style=\"vertical-align:top; margin-right: 10px;\"\u003e\n  \u003c/p\u003e\n  \n\n### Asynchronous Communication with Kafka\n\nTo ensure scalability and decoupled communication between microservices, Memorio uses Apache Kafka for asynchronous messaging. Kafka acts as a message broker that enables services to communicate without direct dependencies on each other.\n\n**Event Producers:** Microservices that generate events (e.g., Post Service publishing a new post event).\n**Event Consumers:** Microservices that consume events (e.g., Notification Service consuming new post events to send notifications).\n\n**Reliable Message Transmission with Transactional Outbox Pattern and Debezium**\n\nMemorio employs the transactional outbox pattern combined with Debezium to ensure reliable message transmission. This pattern helps avoid issues with distributed transactions and ensures that messages are not lost.\n\n**Transactional Outbox Pattern:** Each microservice writes messages to an \"outbox\" table as part of its local transaction. This guarantees that the message is written only if the transaction is successful.\n**Debezium:** An open-source distributed platform that captures row-level changes in databases and streams change events to Kafka. Debezium monitors the outbox table and publishes messages to Kafka topics.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkharzixen%2Fmemorio","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkharzixen%2Fmemorio","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkharzixen%2Fmemorio/lists"}