{"id":16649553,"url":"https://github.com/pro1code1hack/uniquity-test-task","last_synced_at":"2025-12-25T14:34:31.003Z","repository":{"id":150286553,"uuid":"599806133","full_name":"pro1code1hack/Uniquity-test-task","owner":"pro1code1hack","description":"The technical task for one of the best companies in Manchester - Ubiquity ","archived":false,"fork":false,"pushed_at":"2023-02-12T01:54:41.000Z","size":645,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-01-29T02:45:12.764Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","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/pro1code1hack.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-02-09T23:14:12.000Z","updated_at":"2023-02-14T01:34:23.000Z","dependencies_parsed_at":"2023-04-08T15:04:51.114Z","dependency_job_id":null,"html_url":"https://github.com/pro1code1hack/Uniquity-test-task","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pro1code1hack%2FUniquity-test-task","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pro1code1hack%2FUniquity-test-task/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pro1code1hack%2FUniquity-test-task/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pro1code1hack%2FUniquity-test-task/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pro1code1hack","download_url":"https://codeload.github.com/pro1code1hack/Uniquity-test-task/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243223424,"owners_count":20256504,"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":[],"created_at":"2024-10-12T09:11:06.369Z","updated_at":"2025-12-25T14:34:30.957Z","avatar_url":"https://github.com/pro1code1hack.png","language":"Python","readme":"# Features and Workflow\r\n\r\n## Registration☑\r\nAs a user, you can connect to the service, which is available online, and register yourself using your email and specifying a password.\r\n\r\n## CSV upload☑\r\nAfter registering, you will be redirected to a page where you can upload a CSV file. The CSV file should contain the following columns:\r\n\r\n## Models☑\r\n\r\nHere we can see two models in `books_explorer` package one - for saving each file. The second one is used to process CSV\r\n\r\n## Validation☑\r\nDuring the upload process, the unique identifier for the book must be validated. If the identifier is not valid, the upload will be stopped and you will be informed that there is an error with that field in the CSV.\r\n\r\n## File handling☑\r\nDuring the upload process, the CSV file must be renamed to have a unique name (e.g. by appending an UUID) and uploaded to Amazon S3. The name and URL of the file must be saved in the application database.\r\n\r\n## Content management☑\r\nAfter the upload, you will be redirected to a page showing a table, which represents the contents of the CSV file. The page title will display the name of the uploaded CSV. If you are logged into the application, you will also be able to view all of the CSV files you have uploaded in the past, along with their content.\r\n\r\n### Bonuses☑☑☑ 100% DONE\r\n\r\n## External service integration✅: \r\n\r\nEvery time a CSV file is uploaded, the application will send\r\na notification to an external service, performing a POST request to the following API\r\nendpoint (we are using this service as an example, but any public place where we can see\r\nthe POSTs would do as well):\r\n\r\n## Super bonus✅: \r\nSame as point above, but the POST request will include the S3 URL of the\r\nuploaded file in the POST parameters\r\n\r\n# Setup\r\n\r\n1. Create a Django application\r\n2. Run commands!\r\n\r\n```bash\r\n\r\npython -m venv venv\r\nsource/venv/bin/activate\r\npip install -r requirements.txt\r\npython manage.py makemigrations \r\npython manage.py migrate \r\n\r\n```\r\n3. Setup .env file and add your AWS credentials \r\n\r\n```python\r\n\r\nAWS_ACCESS_KEY_ID=\r\nAWS_SECRET_ACCESS_KEY=\r\nAWS_STORAGE_BUCKET_NAME=\r\nAWS_S3_ENDPOINT_URL=\r\n\r\n```\r\n4. Enjoy the product\r\n\r\n\r\n## Taken time for this time was approximately 10h\r\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpro1code1hack%2Funiquity-test-task","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpro1code1hack%2Funiquity-test-task","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpro1code1hack%2Funiquity-test-task/lists"}