{"id":16269618,"url":"https://github.com/av/bitcasino-homework","last_synced_at":"2025-06-15T04:38:47.715Z","repository":{"id":98551191,"uuid":"294130821","full_name":"av/bitcasino-homework","owner":"av","description":"https://bitcasino-homework.vercel.app","archived":false,"fork":false,"pushed_at":"2020-09-14T10:55:54.000Z","size":941,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-14T11:33:53.389Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"TypeScript","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/av.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":"2020-09-09T14:05:05.000Z","updated_at":"2023-03-07T07:52:51.000Z","dependencies_parsed_at":"2023-03-13T23:47:59.598Z","dependency_job_id":null,"html_url":"https://github.com/av/bitcasino-homework","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/av%2Fbitcasino-homework","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/av%2Fbitcasino-homework/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/av%2Fbitcasino-homework/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/av%2Fbitcasino-homework/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/av","download_url":"https://codeload.github.com/av/bitcasino-homework/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247867367,"owners_count":21009240,"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-10T18:08:42.310Z","updated_at":"2025-04-08T15:18:26.857Z","avatar_url":"https://github.com/av.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Bitcasino Homework\n\n\u003e Please, note that I've approached this homework as if I'd be working on it in a context of a much larger project. Aiming for something leaner, I'd arrange it in a fashion similar to how https://av.codes is [built](https://github.com/av/av).\n\n![Screenshot of a resulting image](/public/images/result.png)\n\n## Features\n\n- Basic GraphQL setup with Apollo\n- Using Tailwind.css as a style driver\n- Basic (but type-aware) global state management with `useReducer` and friends\n- Custom `\u003cTypeahead /\u003e` component built with hooks\n- Custom `\u003cInput /\u003e` component with floating label (works on any background)\n- Animations using Framer Motion\n\n## Setup \u0026 run\n\nJust as you'd expect, clone and install all the deps\n\n```bash\ngit clone git@github.com:av/bitcasino-homework.git\ncd bitcasino-homework\nyarn\n```\n\nTo launch locally\n\n```bash\nyarn dev\n```\n\nIt's also deployed to the [https://bitcasino-homework.vercel.app/](https://bitcasino-homework.vercel.app/)\n\n## Tests\n\nIt would be great to cover this homework with proper tests, but unfortunately it took me slightly longer than I anticipated.\nI'm including a few very basic tests, however, to highlight that I'd write them, given enough time:\n\n- [utils module test](https://github.com/av/bitcasino-homework/blob/master/src/lib/utils.test.ts)\n- [Screens component test](https://github.com/av/bitcasino-homework/blob/master/src/components/Screens.test.tsx)\n- [sample E2E test, using TestCafe](https://github.com/av/bitcasino-homework/blob/master/e2e/01-base-test.ts)\n\n## Notes \u0026 Improvements\n\nI approached this homework from a slightly ambitious side, implementing it like it's a part of larger already existing codebase. That struck me from the side of needing to cover all the bases which would've been written a long time before in such a codebase.\n\nSo, I would improve behavior more in following areas, if had more time:\n- Animated component behaviors, sometimes the motion flows out of context\n- Typeahead reset lifecycle, when new asset is added to the tracker\n- Better behavior on mobile (it doesn't break, but still)\n- Better behavior for large amount of tracked assets\n- Incremental update \u0026 refetch instead of a single global query for all the assets\n\nHowever, you may find some of the bases I've still managed to cover interesting:\n\n- [Typeahead](https://github.com/av/bitcasino-homework/blob/master/src/components/Typeahead.tsx) from scratch with [hooks](https://github.com/av/bitcasino-homework/blob/master/src/hooks/useTypeahead.ts)\n- Animated [Screens](https://github.com/av/bitcasino-homework/blob/master/src/components/Screens.tsx) and [List](https://github.com/av/bitcasino-homework/blob/master/src/components/AnimatedList.tsx) components\n- [Global State](https://github.com/av/bitcasino-homework/blob/master/src/components/withGlobalState.tsx) without Redux\n\nAll being said, I'd wish to spend more time on certain behaviors to polish them a bit more.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fav%2Fbitcasino-homework","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fav%2Fbitcasino-homework","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fav%2Fbitcasino-homework/lists"}