{"id":18676833,"url":"https://github.com/viendinhcom/practice-makes-perfect","last_synced_at":"2026-01-25T16:31:30.157Z","repository":{"id":248091418,"uuid":"825548503","full_name":"VienDinhCom/practice-makes-perfect","owner":"VienDinhCom","description":"A space where I refine basics, adapt to change, and stay relevant in an ever-evolving professional landscape.","archived":false,"fork":false,"pushed_at":"2026-01-13T10:02:43.000Z","size":5672,"stargazers_count":1,"open_issues_count":28,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-13T12:52:12.316Z","etag":null,"topics":["backend","css","deno","frontend","fullstack","html","javascript","nodejs","react","sass","sql","typescript"],"latest_commit_sha":null,"homepage":"https://viendinh.vercel.app","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/VienDinhCom.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-07-08T04:00:35.000Z","updated_at":"2026-01-13T10:02:47.000Z","dependencies_parsed_at":"2026-01-07T06:13:37.275Z","dependency_job_id":null,"html_url":"https://github.com/VienDinhCom/practice-makes-perfect","commit_stats":null,"previous_names":["viendinhcom/build-a-celestial-bodies-database","viendinhcom/practice-makes-perfect"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/VienDinhCom/practice-makes-perfect","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VienDinhCom%2Fpractice-makes-perfect","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VienDinhCom%2Fpractice-makes-perfect/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VienDinhCom%2Fpractice-makes-perfect/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VienDinhCom%2Fpractice-makes-perfect/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/VienDinhCom","download_url":"https://codeload.github.com/VienDinhCom/practice-makes-perfect/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VienDinhCom%2Fpractice-makes-perfect/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28755526,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-25T13:59:49.818Z","status":"ssl_error","status_checked_at":"2026-01-25T13:59:33.728Z","response_time":113,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["backend","css","deno","frontend","fullstack","html","javascript","nodejs","react","sass","sql","typescript"],"created_at":"2024-11-07T09:31:15.054Z","updated_at":"2026-01-25T16:31:30.152Z","avatar_url":"https://github.com/VienDinhCom.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Practice Makes Perfect\n\nI believe in practice—it’s almost like a religion to me. Doing, not just reading. That’s how I learn best.\n\nI like project-based learning. Getting my hands dirty, especially in tech. Because theory is great, but building something? That’s where real understanding happens.\n\nI also trust the basics. They free my mind. When you master the fundamentals, adapting to new technology feels natural—because tech evolves fast.\n\nThat’s why I created this repository. A place to sharpen my core skills and stay updated with the latest tech.\n\nIt’s simple: practice, adapt, grow.\n\n## Fundamentals\n\nI use **freeCodeCamp** to fill my knowledge gaps in full-stack development. It’s a well-known community-driven bootcamp that has helped thousands land jobs at tech companies including Apple, Google, Microsoft, Spotify and Amazon.\n\n- [Responsive Web Design](/freecodecamp-responsive-web-design/)\n- [JavaScript Algorithms and Data Structures](/freecodecamp-javascript-algorithms-and-data-structures/)\n- [Front End Development Libraries](/freecodecamp-front-end-development-libraries/)\n- [Data Visualization](/freecodecamp-data-visualization/)\n- [Relational Database](/freecodecamp-relational-database/)\n- [Back End Development and APIs](/freecodecamp-back-end-development-and-apis/)\n- [Quality Assurance](/freecodecamp-quality-assurance/)\n\nI went through countless exercises, built over **35** hands-on projects, earned more than **3,000** points, and completed **7** certifications—representing over **2,100** hours of work. You can see my progress [here](https://www.freecodecamp.org/VienDinhCom).\n\n## Container\n\n- [Docker Recipes](/container-docker-recipes)\n- [Docker VSCode Workspace](https://github.com/VienDinhCom/docker-vscode-fullstack)\n\n## Data Structures and Algorithms\n\n- [freeCodeCamp Coding Interview Prep](/freecodecamp-coding-interview-prep)\n- [Grind LeetCode Questions with TypeScript](/leetcode-typescript)\n\n## Database\n\n- [Drizzle ORM in Practice](/database-orm-drizzle/)\n- [Prisma ORM in Practice](/database-orm-prisma/)\n- [Relational Database](/freecodecamp-relational-database/)\n- [PostgreSQL Exercises](/database-postgresql-exercises/)\n\n## React\n\n- [React Vite Full Stack](/react-vite-fullstack/)\n- [React Query in Practice](/react-tanstack-query/)\n- [Next.js Shopify Storefront](https://github.com/VienDinhCom/next-shopify-storefront)\n- [Next.js App Router in Practice](/react-nextjs/)\n- [Next.js SaaS with Drizzle and Stripe](/react-nextjs-with-stripe/)\n\n## Svelte\n\n- [Svelte Kit in Practice](/svelte-kit)\n\n## Projects\n\nI started as a front-end developer—just building interfaces, making things look good. But over time, curiosity pulled me deeper. I wanted to understand the whole system, not just the surface. So, I evolved into a full-stack developer.\n\nI have worked with agencies like Creative Haus, Cactus Themes, and Redline Coders. I have also been part of companies like Morph Ventures and Ventive. And sometimes, I went solo—freelancing on Upwork, tackling projects end-to-end.\n\nEach experience shaped me. Different teams, different challenges. But the goal remained the same—solving problems, learning, and growing.\n\nYou can explore my work history on my LinkedIn [projects listing](https://www.linkedin.com/in/viendinhcom/details/projects/).\n\n## History\n\n![Alt](https://repobeats.axiom.co/api/embed/096d8610fcd82ce6aa1cb1f7969c4182f2021c99.svg \"Practice Makes Perfect Analytics\")\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fviendinhcom%2Fpractice-makes-perfect","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fviendinhcom%2Fpractice-makes-perfect","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fviendinhcom%2Fpractice-makes-perfect/lists"}