{"id":20393727,"url":"https://github.com/luanroger/volumevault","last_synced_at":"2026-04-13T03:01:50.553Z","repository":{"id":186092766,"uuid":"672339598","full_name":"LuanRoger/VolumeVault","owner":"LuanRoger","description":"📖 Keep your books informations safe and sound.","archived":false,"fork":false,"pushed_at":"2023-08-29T19:08:57.000Z","size":15515,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-15T10:56:01.638Z","etag":null,"topics":["asp-net","docker","docker-compose","dotnet","flutter","postgresql"],"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/LuanRoger.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-29T18:28:31.000Z","updated_at":"2023-09-30T02:22:34.000Z","dependencies_parsed_at":null,"dependency_job_id":"c70725a2-1993-426f-b928-7088a76dd313","html_url":"https://github.com/LuanRoger/VolumeVault","commit_stats":null,"previous_names":["luanroger/volumevault"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LuanRoger%2FVolumeVault","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LuanRoger%2FVolumeVault/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LuanRoger%2FVolumeVault/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LuanRoger%2FVolumeVault/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/LuanRoger","download_url":"https://codeload.github.com/LuanRoger/VolumeVault/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241945297,"owners_count":20046858,"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","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":["asp-net","docker","docker-compose","dotnet","flutter","postgresql"],"created_at":"2024-11-15T03:49:48.300Z","updated_at":"2026-04-13T03:01:50.482Z","avatar_url":"https://github.com/LuanRoger.png","language":"Dart","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cimg src=\"https://github.com/LuanRoger/VolumeVault/blob/main/images/icon.png\" align=\"left\" height=\"110\"\u003e\n\u003ch1\u003eVolume Vault\u003c/h1\u003e\n\u003ch3\u003eKeep your books informations safe and sound.\u003c/h3\u003e\n\n[![VolumeVaultInfra CI](https://github.com/LuanRoger/VolumeVault/actions/workflows/VolumeVaultInfra-CI.yml/badge.svg?branch=main)](https://github.com/LuanRoger/VolumeVault/actions/workflows/VolumeVaultInfra-CI.yml)\n[![codecov](https://codecov.io/gh/LuanRoger/VolumeVault/branch/main/graph/badge.svg?token=YYL3LKQ2VB)](https://codecov.io/gh/LuanRoger/VolumeVault)\n[![style: very good analysis](https://img.shields.io/badge/style-very_good_analysis-B22C89.svg)](https://pub.dev/packages/very_good_analysis)\n\n## Features\n- 📖 Save your books informations.\n- 🔒 Authenticate with different users.\n- 📷 Add cover image for books.\n- 🖌️ Themes: Dark and light mode.\n- 💬 Multi-language support.\n- 🪢 Filter result.\n- 🏅 Badges for users.\n\n## Stack overview\n- 🖥️ UI build with [Flutter](https://flutter.dev/) and [Material Desing 3](https://m3.material.io)\n- 📡 Own designed REST API build with [ASP.NET](https://dotnet.microsoft.com/en-us/apps/aspnet).\n- 🔍 Fast search with [Meilisearch](https://www.meilisearch.com).\n- 🐋 [Docker](https://www.docker.com) and Docker Compose support.\n- 🔨 Multi environment build (development, sttaging, production).\n- 🔥 Integration with Firebase Admim SDK.\n- 🛣️ API versioning.\n- 📤 Output cache.\n\n## Other techs, tools and libs\n- [Serilog](https://serilog.net).\n- [FluentValidation](https://docs.fluentvalidation.net).\n- [AutoMapper](https://automapper.org).\n- Entity Framework.\n- Postgres.\n\n## Prerequisite\n- Flutter\n- Docker\n- Docker Compose\n- Firebase service\n\n# Front-end client\nThe front-end was build with Flutter and have a responsive interface using Responsive Framework package, was created interface for Mobile (480), Tablet (700) and Desktop (1000) screen sizes.\n\n[![Flutter Responsive](https://img.shields.io/badge/flutter-responsive-brightgreen.svg?style=flat-square)](https://github.com/Codelessly/ResponsiveFramework)\n\n# API Specifications (VolumeVaulInfra API)\nThe API manage books and badges, it integrates with Firebase to check the users, was create with ASP.NET using Entity Framework to CRUD into a Postgres database, while all operations is logged by Serilog.\n\nThe API have a versioning system especified on requests header and an internal cache system to improve the performance.\n# Endpoints\nCheke out the [Postman](https://www.postman.com) collection to see all endpoints and examples:\n\n[![Postman](https://img.shields.io/badge/Postman-FF6C37?style=for-the-badge\u0026logo=postman\u0026logoColor=white)](https://github.com/LuanRoger/VolumeVault/tree/main/postman)\n\n## Hug service\n### `/book`\n- GET `/`\n  - `?limitPerPage=10`\n  - `?sort=0`\n  - `?ascending=true`\n  - `?bookFormat=1`\n  - `?page=1`\n  - `?userId=0`\n- POST `/`\n  - \u003e Has body\n  - `?userId=0`\n- PUT `/{bookID:int}`\n  - `?userId=0`\n- DELETE `/{bookID:int}`\n### `/stats`\n- GET `/`\n  - `?userId=0`\n### `/badge`\n- GET `/`\n  - `?userId=0`\n- POST `/`\n  - `?userId=0`\n- DELETE `/{badgeID:int}`\n  - `?userId=0`\n- GET `/archive`\n  - `?email=test@test.com`\n- PUT `/archive`\n  - \u003e Has body\n- POST `/archive`\n  - \u003e Has body\n- DELETE `/archive`\n  - `?email=test@test.com`\n  - `?badgeCode=0`\n### `/auth`\n- GET `/email/{userEmail}`\n- GET `/id/{firebaseUserUid}`\n- GET `/search`\n  - `?query={string}`\n\n## Search service\n### `/search`\n- GET `/`\n  - `?userId=0`\n  - `?query={string}`\n  - `?limitPerSection=10`\n\n## Setup\nTo setup the project (development/production environments) [click here](https://github.com/LuanRoger/VolumeVault/blob/main/SETUP.md).\n\n# Screenshots\n|                                                                            |\n|----------------------------------------------------------------------------|\n| ![https://github.com/LuanRoger/VolumeVault/blob/main/images/home_page01.png](https://github.com/LuanRoger/VolumeVault/blob/main/images/home_page01.png) |\n| ![https://github.com/LuanRoger/VolumeVault/blob/main/images/home_page03.png](https://github.com/LuanRoger/VolumeVault/blob/main/images/home_page03.png) |\n| ![https://github.com/LuanRoger/VolumeVault/blob/main/images/home_page02.png](https://github.com/LuanRoger/VolumeVault/blob/main/images/home_page02.png) |\n| ![https://github.com/LuanRoger/VolumeVault/blob/main/images/home_page04.png](https://github.com/LuanRoger/VolumeVault/blob/main/images/home_page04.png) |\n\n## Deploy it\n[![DigitalOcean Referral Badge](https://web-platforms.sfo2.digitaloceanspaces.com/WWW/Badge%203.svg)](https://www.digitalocean.com/?refcode=dddd7d890760\u0026utm_campaign=Referral_Invite\u0026utm_medium=Referral_Program\u0026utm_source=badge)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fluanroger%2Fvolumevault","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fluanroger%2Fvolumevault","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fluanroger%2Fvolumevault/lists"}