├── .idea ├── .gitignore ├── codeStyles │ └── codeStyleConfig.xml ├── cssdialects.xml ├── inspectionProfiles │ └── Project_Default.xml ├── kurzr.iml ├── misc.xml ├── modules.xml ├── prettier.xml └── vcs.xml ├── .vscode ├── launch.json ├── settings.json └── tasks.json ├── Makefile ├── README.md ├── backend ├── .env.example ├── .gitignore ├── Dockerfile ├── Makefile ├── core │ ├── recaptcha.go │ └── url.go ├── docker-compose.yml ├── env │ └── env.go ├── go.mod ├── go.sum ├── main.go ├── ratelimit │ └── ratelimit_middleware.go ├── recaptcha │ └── recaptcha.go ├── url │ ├── delivery │ │ └── http │ │ │ ├── url_handler.go │ │ │ └── url_handler_test.go │ ├── keygen │ │ └── url_key_generator.go │ ├── repository │ │ ├── memory │ │ │ ├── url_memory_repository.go │ │ │ └── url_memory_repository_test.go │ │ └── redis │ │ │ └── url_redis_repository.go │ └── usecase │ │ ├── url_usecase.go │ │ └── url_usecase_test.go └── util │ ├── errors.go │ └── validation.go ├── frontend ├── .env ├── .gitignore ├── .prettierrc.json ├── components │ ├── Button.module.css │ ├── Button.tsx │ ├── Form.tsx │ ├── Input.tsx │ ├── OriginalUrl.tsx │ └── Result.tsx ├── next-env.d.ts ├── next.config.js ├── package-lock.json ├── package.json ├── pages │ ├── _app.tsx │ └── index.tsx ├── postcss.config.js ├── tailwind.config.js └── tsconfig.json └── netlify.toml /.idea/.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eyalch/kurzr/HEAD/.idea/.gitignore -------------------------------------------------------------------------------- /.idea/codeStyles/codeStyleConfig.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eyalch/kurzr/HEAD/.idea/codeStyles/codeStyleConfig.xml -------------------------------------------------------------------------------- /.idea/cssdialects.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eyalch/kurzr/HEAD/.idea/cssdialects.xml -------------------------------------------------------------------------------- /.idea/inspectionProfiles/Project_Default.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eyalch/kurzr/HEAD/.idea/inspectionProfiles/Project_Default.xml -------------------------------------------------------------------------------- /.idea/kurzr.iml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eyalch/kurzr/HEAD/.idea/kurzr.iml -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eyalch/kurzr/HEAD/.idea/misc.xml -------------------------------------------------------------------------------- /.idea/modules.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eyalch/kurzr/HEAD/.idea/modules.xml -------------------------------------------------------------------------------- /.idea/prettier.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eyalch/kurzr/HEAD/.idea/prettier.xml -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eyalch/kurzr/HEAD/.idea/vcs.xml -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eyalch/kurzr/HEAD/.vscode/launch.json -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eyalch/kurzr/HEAD/.vscode/settings.json -------------------------------------------------------------------------------- /.vscode/tasks.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eyalch/kurzr/HEAD/.vscode/tasks.json -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eyalch/kurzr/HEAD/Makefile -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eyalch/kurzr/HEAD/README.md -------------------------------------------------------------------------------- /backend/.env.example: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eyalch/kurzr/HEAD/backend/.env.example -------------------------------------------------------------------------------- /backend/.gitignore: -------------------------------------------------------------------------------- 1 | .env 2 | 3 | __debug_bin 4 | -------------------------------------------------------------------------------- /backend/Dockerfile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eyalch/kurzr/HEAD/backend/Dockerfile -------------------------------------------------------------------------------- /backend/Makefile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eyalch/kurzr/HEAD/backend/Makefile -------------------------------------------------------------------------------- /backend/core/recaptcha.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eyalch/kurzr/HEAD/backend/core/recaptcha.go -------------------------------------------------------------------------------- /backend/core/url.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eyalch/kurzr/HEAD/backend/core/url.go -------------------------------------------------------------------------------- /backend/docker-compose.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eyalch/kurzr/HEAD/backend/docker-compose.yml -------------------------------------------------------------------------------- /backend/env/env.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eyalch/kurzr/HEAD/backend/env/env.go -------------------------------------------------------------------------------- /backend/go.mod: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eyalch/kurzr/HEAD/backend/go.mod -------------------------------------------------------------------------------- /backend/go.sum: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eyalch/kurzr/HEAD/backend/go.sum -------------------------------------------------------------------------------- /backend/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eyalch/kurzr/HEAD/backend/main.go -------------------------------------------------------------------------------- /backend/ratelimit/ratelimit_middleware.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eyalch/kurzr/HEAD/backend/ratelimit/ratelimit_middleware.go -------------------------------------------------------------------------------- /backend/recaptcha/recaptcha.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eyalch/kurzr/HEAD/backend/recaptcha/recaptcha.go -------------------------------------------------------------------------------- /backend/url/delivery/http/url_handler.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eyalch/kurzr/HEAD/backend/url/delivery/http/url_handler.go -------------------------------------------------------------------------------- /backend/url/delivery/http/url_handler_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eyalch/kurzr/HEAD/backend/url/delivery/http/url_handler_test.go -------------------------------------------------------------------------------- /backend/url/keygen/url_key_generator.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eyalch/kurzr/HEAD/backend/url/keygen/url_key_generator.go -------------------------------------------------------------------------------- /backend/url/repository/memory/url_memory_repository.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eyalch/kurzr/HEAD/backend/url/repository/memory/url_memory_repository.go -------------------------------------------------------------------------------- /backend/url/repository/memory/url_memory_repository_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eyalch/kurzr/HEAD/backend/url/repository/memory/url_memory_repository_test.go -------------------------------------------------------------------------------- /backend/url/repository/redis/url_redis_repository.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eyalch/kurzr/HEAD/backend/url/repository/redis/url_redis_repository.go -------------------------------------------------------------------------------- /backend/url/usecase/url_usecase.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eyalch/kurzr/HEAD/backend/url/usecase/url_usecase.go -------------------------------------------------------------------------------- /backend/url/usecase/url_usecase_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eyalch/kurzr/HEAD/backend/url/usecase/url_usecase_test.go -------------------------------------------------------------------------------- /backend/util/errors.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eyalch/kurzr/HEAD/backend/util/errors.go -------------------------------------------------------------------------------- /backend/util/validation.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eyalch/kurzr/HEAD/backend/util/validation.go -------------------------------------------------------------------------------- /frontend/.env: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eyalch/kurzr/HEAD/frontend/.env -------------------------------------------------------------------------------- /frontend/.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eyalch/kurzr/HEAD/frontend/.gitignore -------------------------------------------------------------------------------- /frontend/.prettierrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "semi": false 3 | } 4 | -------------------------------------------------------------------------------- /frontend/components/Button.module.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eyalch/kurzr/HEAD/frontend/components/Button.module.css -------------------------------------------------------------------------------- /frontend/components/Button.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eyalch/kurzr/HEAD/frontend/components/Button.tsx -------------------------------------------------------------------------------- /frontend/components/Form.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eyalch/kurzr/HEAD/frontend/components/Form.tsx -------------------------------------------------------------------------------- /frontend/components/Input.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eyalch/kurzr/HEAD/frontend/components/Input.tsx -------------------------------------------------------------------------------- /frontend/components/OriginalUrl.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eyalch/kurzr/HEAD/frontend/components/OriginalUrl.tsx -------------------------------------------------------------------------------- /frontend/components/Result.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eyalch/kurzr/HEAD/frontend/components/Result.tsx -------------------------------------------------------------------------------- /frontend/next-env.d.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eyalch/kurzr/HEAD/frontend/next-env.d.ts -------------------------------------------------------------------------------- /frontend/next.config.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eyalch/kurzr/HEAD/frontend/next.config.js -------------------------------------------------------------------------------- /frontend/package-lock.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eyalch/kurzr/HEAD/frontend/package-lock.json -------------------------------------------------------------------------------- /frontend/package.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eyalch/kurzr/HEAD/frontend/package.json -------------------------------------------------------------------------------- /frontend/pages/_app.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eyalch/kurzr/HEAD/frontend/pages/_app.tsx -------------------------------------------------------------------------------- /frontend/pages/index.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eyalch/kurzr/HEAD/frontend/pages/index.tsx -------------------------------------------------------------------------------- /frontend/postcss.config.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eyalch/kurzr/HEAD/frontend/postcss.config.js -------------------------------------------------------------------------------- /frontend/tailwind.config.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eyalch/kurzr/HEAD/frontend/tailwind.config.js -------------------------------------------------------------------------------- /frontend/tsconfig.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eyalch/kurzr/HEAD/frontend/tsconfig.json -------------------------------------------------------------------------------- /netlify.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eyalch/kurzr/HEAD/netlify.toml --------------------------------------------------------------------------------