{"id":21205944,"url":"https://github.com/dracudev/s5-digital-onboarding","last_synced_at":"2025-03-14T23:11:20.152Z","repository":{"id":262503964,"uuid":"887224362","full_name":"dracudev/S5-Digital-Onboarding","owner":"dracudev","description":"React app with step-by-step screens and responsive design.","archived":false,"fork":false,"pushed_at":"2024-11-29T23:44:32.000Z","size":381,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-21T15:31:45.240Z","etag":null,"topics":["bootstrap5","eslint","it-academy","javascript","react","reactjs","responsive","styled-components","vite"],"latest_commit_sha":null,"homepage":"https://s5-digital-onboarding.vercel.app","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/dracudev.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-12T11:34:03.000Z","updated_at":"2025-01-19T14:00:12.000Z","dependencies_parsed_at":null,"dependency_job_id":"4925b257-9124-43f3-8d8d-4d39bc20c9a0","html_url":"https://github.com/dracudev/S5-Digital-Onboarding","commit_stats":null,"previous_names":["dracudev/s5-digital-onboarding"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dracudev%2FS5-Digital-Onboarding","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dracudev%2FS5-Digital-Onboarding/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dracudev%2FS5-Digital-Onboarding/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dracudev%2FS5-Digital-Onboarding/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dracudev","download_url":"https://codeload.github.com/dracudev/S5-Digital-Onboarding/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243658270,"owners_count":20326467,"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":["bootstrap5","eslint","it-academy","javascript","react","reactjs","responsive","styled-components","vite"],"created_at":"2024-11-20T20:53:46.853Z","updated_at":"2025-03-14T23:11:20.128Z","avatar_url":"https://github.com/dracudev.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# S5 React Onboarding App\n\n## 📄 Description\n\nThis project involves building a digital onboarding application using React. The app will present a sequence of instructional messages or steps, accompanied by images, allowing users to navigate forward or backward through the onboarding screens. Each screen displays only one step at a time, enhancing the user experience by breaking down information into manageable parts.\n\n### Objectives\n\n- Apply foundational React concepts such as components, hooks, and props.\n- Use Bootstrap 5 for responsive design.\n- Style components using Styled Components for customizable and scoped styling.\n\n\n\u003cbr\u003e\n\n## 📐 Project Structure\n\n### ⭐ Level 1\n\n- **Exercise 1**: Initialize the project by setting up the main `Card` component:\n  - Create a `Card` component to display each onboarding step.\n  - Load `Card` within the main `App` component.\n  - Define the `tutorialData` array in `App` to store instructional content for each step.\n  - Implement `useState` in `App` to manage the current step.\n  - Pass step data as props from `App` to `Card`, displaying the title and description in `Card`.\n\n- **Exercise 2**: Enhance the `Card` component to navigate through the onboarding steps:\n  - Implement a `nextStep` function in `App` to increment the current step.\n  - Pass `nextStep` to `Card` and trigger it on button click to update the displayed step in `Card`.\n\n- **Exercise 3**: Make the `Card` component responsive to ensure usability across devices.\n\n- **Exercise 4**: Add backward navigation with a `prevStep` function:\n  - Implement `prevStep` in `App` to decrement the current step.\n  - Pass `prevStep` to `Card` and call it as needed.\n  - Use conditional rendering to display the appropriate navigation buttons:\n    - Step 1: Show \"Next\" button only.\n    - Step 2: Show both \"Next\" and \"Back\" buttons.\n    - Final Step: Show \"Back\" button only.\n\n- **Exercise 5**: Create an `Indicator` component to display the current step visually:\n  - Load `Indicator` within `Card` and pass the total steps and current step as props.\n  - Use `.map` to render step indicators, highlighting the active step with styled components.\n\n### ⭐⭐ Level 2\n\n- **Exercise 6**: Enable clickable navigation on each indicator:\n  - On clicking an indicator dot, display the corresponding step content in `Card`.\n\n### ⭐⭐⭐ Level 3\n\n- **Exercise 7**: Add transition animations between steps:\n  - Implement animations to slide the image out to the left and the next one in from the right.\n  - Optionally, add animations to the step indicators for a smoother transition.\n\n\u003cbr\u003e\n\n## 💻 Technologies Used\n\n- **Vite** for development and building.\n- **React** and **React-DOM** for creating component-based UI.\n- **Bootstrap 5** and **React-Bootstrap** for responsive styling.\n- **Styled Components** for scoped and dynamic styling.\n- **PropTypes** for runtime type checking of props.\n- **Node.js** and npm/yarn for dependency management.\n- **ESLint** for code quality and linting.\n\n\u003cbr\u003e\n\n## 📋 Requirements\n\n- **Node.js 16 or newer**: JavaScript runtime for executing the project.\n- **npm** or **yarn**: Package manager to install dependencies.\n- **A modern web browser**: Required to run the application.\n- **Vite**: Preconfigured as part of the project for development and build processes.\n\n\u003cbr\u003e\n\n## 🛠️ Installation\n\n1. Clone this repository: \n  ```bash\n  git clone https://github.com/dracudev/S5-Digital-Onboarding.git\n  ```\n2. Navigate to the project directory: \n  ```bash\n  cd S5-Digital-Onboarding\n  ```\n3. Open the project in your text editor and start coding.\n  ```bash\n  code .\n  ```\n\n\u003cbr\u003e\n\n\u003cbr\u003e\n\n## ▶️ Execution\n\n1. Install the dependencies and run the server.\n  ```bash\n  npm install\n  npm run dev\n  ```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdracudev%2Fs5-digital-onboarding","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdracudev%2Fs5-digital-onboarding","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdracudev%2Fs5-digital-onboarding/lists"}