{"id":22980402,"url":"https://github.com/xoticdsign/returnauf","last_synced_at":"2025-04-02T09:23:16.213Z","repository":{"id":262993633,"uuid":"888945567","full_name":"xoticdsign/returnauf","owner":"xoticdsign","description":"🐺 REST API с коллекцией самых мемных ауф цитат","archived":false,"fork":false,"pushed_at":"2024-12-13T11:41:11.000Z","size":108,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-08T00:28:43.109Z","etag":null,"topics":["12-factor","docker","fiber","golang","http","redis","rest-api","sqlite","swagger","testing","zap"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":false,"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/xoticdsign.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":"2024-11-15T10:02:14.000Z","updated_at":"2024-12-16T07:30:48.000Z","dependencies_parsed_at":"2024-12-05T19:39:32.742Z","dependency_job_id":null,"html_url":"https://github.com/xoticdsign/returnauf","commit_stats":null,"previous_names":["xoticdsign/auf-citaty-api","xoticdsign/auf-citaty","xoticdsign/returnauf"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xoticdsign%2Freturnauf","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xoticdsign%2Freturnauf/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xoticdsign%2Freturnauf/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xoticdsign%2Freturnauf/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/xoticdsign","download_url":"https://codeload.github.com/xoticdsign/returnauf/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246785910,"owners_count":20833604,"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":["12-factor","docker","fiber","golang","http","redis","rest-api","sqlite","swagger","testing","zap"],"created_at":"2024-12-15T01:39:35.014Z","updated_at":"2025-04-02T09:23:16.188Z","avatar_url":"https://github.com/xoticdsign.png","language":"Go","readme":"# 🐺 returnauf\n\n**!!! Я прекрасно понимаю, что нельзя так хранить .env, но считаю, что в рамках данного проекта это уместно, так как его основные задачи - демонстрация и локальное использование.** \n\n**returnauf** — это юмористический проект, демонстрирующий использование различных технологий в реальных условиях. Приложение представляет собой API для работы с коллекцией цитат. Оно разработано с использованием высокопроизводительных инструментов и лучших практик, включая кэширование, логирование и масштабируемую архитектуру.\n\n### Структура проекта\n\n```bash\nreturnauf/\n├── cmd/\n│   └── app/\n│       └── main.go\n├── config/\n│   └── config.go\n├── docs/\n│   ├── docs.go\n│   ├── swagger.json\n│   └── swagger.yaml\n├── internal/\n│   ├── app/\n│   │   └── app.go\n│   ├── cache/\n│   │   ├── cache.go\n│   │   └── cache_test.go\n│   ├── middleware/\n│   │   ├── middleware.go\n│   │   └── middleware_test.go\n│   ├── database/\n│   │   ├── database.go\n│   │   └── database_test.go\n│   ├── handlers/\n│   │   ├── handlers.go\n│   │   └── handlers_test.go\n│   ├── logging/\n│   │   └── logging.go\n│   └── utils/\n│       ├── utils.go\n│       └── utils_test.go\n├── models/\n│   └── responses/\n│       └── responses.go\n├── .dockerignore\n├── .env\n├── .gitignore\n├── db.sqlite\n├── compose.yaml\n├── Dockerfile\n├── go.mod\n└── go.sum\n```\n\n### Используемые технологии\n\n- **Go**  \n  Основной язык разработки.\n\n- **Fiber**  \n  Обрабатывает маршруты, запросы и ответы. Поддерживает Middleware для проверки аутентификации и логирования.\n\n- **SQLite**    \n  Легковесная база данных, используемая для хранения цитат.\n\n- **Redis**  \n  Используется для кэширования данных, что ускоряет доступ к часто запрашиваемым цитатам.\n\n- **Zap**  \n  Применяется для отслеживания ошибок, предупреждений и информационных сообщений.\n\n- **Swagger**  \n  Используется для документации.\n\n- **Docker**  \n  Используется для контейнеризации приложения. Обеспечивает переносимость. Упрощает развертывание в разных средах.\n\n### Unit и Integration-тестирование  \n\nИспользуются библиотеки **testify** и встроенные инструменты Golang для покрытие тестами ключевых функций проекта. Тесты проверяют корректность работы маршрутов, API-ключей и вспомогательных методов..\n\n### Архитектурный паттерн\n\nПриложение **returnauf** разработано в рамках **12-факторной архитектуры**, что обеспечивает:\n- Простоту конфигурации через переменные среды.\n- Легкость масштабирования.\n- Возможность развертывания в облачных средах.\n\n### Тип API\n\n**returnauf - это REST API**, которое:\n- Обрабатывает HTTP-запросы для работы с данными.\n- Возвращает ответы в формате JSON.\n\n## Действия\n\nНиже описаны доступные маршруты и примеры запросов.\n\n### Маршруты:\n\n```bash\nGET /           # Возвращает полный список цитат\nGET /random     # Возвращает случайную цитату\nGET /:id        # Возвращает цитату по заданному ID\n```\n\n### Сделать запрос к API\n\n```bash\ncurl http://localhost:8080/\u003cмаршрут\u003e?returnauf-key=\u003cключ\u003e\n```\n\n## Как установить и использовать?\n\n**returnauf** можно запустить двумя способами: в Docker-контейнере или локально.\n\n### Запуск с использованием Docker\n\n1. Убедитесь, что у вас установлен **Docker**.\n\n2. Клонируйте репозиторий:\n  \n```bash\ngit clone github.com/xoticdsign/returnauf\n```\n\n```bash\ncd returnauf   \n```\n\n3. Запустите приложение с помощью Docker Compose:\n\n```bash\ndocker-compose up --build\n```\n\n4. Приложение будет доступно по адресу:\n   \n```bash\nhttp://localhost:8080\n```\n\n### Локальный запуск\n\n1. Убедитесь, что у вас установлены:\n\n- **Go (версия 1.23 или выше)**\n- **Redis**\n\n2. Клонируйте репозиторий:\n\n```bash\ngit clone github.com/xoticdsign/returnauf\n```\n\n```bash\ncd returnauf\n```\n\n3. Установите зависимости:\n\n```bash\ngo mod download\n```\n   \n4. Убедитесь, что **Redis** работает локально (по умолчанию на localhost:6379).\n\n5. Запустите приложение:\n\n```bash\ngo run cmd/app/main.go\n```\n   \n6. Приложение будет доступно по адресу:\n\n```bash\nhttp://localhost:8080\n```\n\n### Переменные окружения\n\nВ файле .env находятся ключевые настройки для работы приложения.\n\nПример конфигурации:\n\n```env\nSERVER_ADDRESS=0.0.0.0:8080\nREDIS_ADDRESS=127.0.0.1:6379\nREDIS_PASSWORD=\"\"\nDB_ADDRESS=db.sqlite\nAPI_KEY=testKey\n```\n\n## Тестирование\n\nДля запуска тестов выполните:\n\n```bash\ngo test ./...\n```\n\n## Лицензия\n\n[MIT](https://mit-license.org/)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxoticdsign%2Freturnauf","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fxoticdsign%2Freturnauf","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxoticdsign%2Freturnauf/lists"}