{"id":21570001,"url":"https://github.com/ribtas007/calender","last_synced_at":"2025-08-01T04:38:41.906Z","repository":{"id":238367273,"uuid":"796407116","full_name":"RIBTAS007/calender","owner":"RIBTAS007","description":null,"archived":false,"fork":false,"pushed_at":"2024-05-05T20:52:00.000Z","size":567,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-01-24T12:45:21.126Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","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/RIBTAS007.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-05-05T20:51:57.000Z","updated_at":"2024-05-05T20:52:04.000Z","dependencies_parsed_at":null,"dependency_job_id":"1d28051d-8307-4175-85de-2228cda56878","html_url":"https://github.com/RIBTAS007/calender","commit_stats":null,"previous_names":["ribtas007/calender"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RIBTAS007%2Fcalender","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RIBTAS007%2Fcalender/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RIBTAS007%2Fcalender/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RIBTAS007%2Fcalender/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RIBTAS007","download_url":"https://codeload.github.com/RIBTAS007/calender/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244166757,"owners_count":20409179,"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-11-24T11:11:20.881Z","updated_at":"2025-03-18T06:13:16.156Z","avatar_url":"https://github.com/RIBTAS007.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Objective\n\n- Develop a dynamic appointment booking screen for our app using React.\n\n![App Preview](./src/images/app.png)\n\n## How to run the project\n\n- fork the project to your github and pull the code into your local machine.\n- once you have the local code reaady , open the trminal and run `npm install`\n- once npm install is successful, you can run `npm start` to start the app\n- Once the app is successfully launched you can see it on localhost:3000.(depends on your machine)\n\n## Tech stack used\n\n- React\n- HTML,CSS, JavaScript\n- react calender: for displaying the calender\n- react redux and react redux toolkit for managing the states.\n- react icons for icons\n- poppins font\n- moment timezone to convert all the dates and time to different formats.\n\n## Validations checked\n\n- user cannot select previous date for booking.\n- added overflow in the timeslots section so that we can accomdate n number of timeslots in limited space.\n- used next buuton to show the booking information.\n  - It will not be enabled until a user selects a slot and a booking date.\n- I have assumed that the `select from variants` is an optional feild.\n  - if user does not select the variant then all the slots irrespective of the duration will be shown.\n  - it has no involvement with fetching the data and is solely responsible forthe filter part.\n- I have tried to copy each and every description os style from the figma provided, and have made it responsive too.\n- for optimization I have use useMemo, usecallback hooks.\n- the lazyloading didnt felt necessary as the app was not too big and idnt have lots of components.\n- for keeping the fetch logic and handling errors , I have created a custom hook that takes care of it.\n- redux is used for managing the states.\n- I havent used plain css from a long time so it was a good revision, took a lot of search to figure out some specific css.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fribtas007%2Fcalender","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fribtas007%2Fcalender","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fribtas007%2Fcalender/lists"}