Giter VIP home page Giter VIP logo

pokemonpractice's Introduction

Pokemon Practice

When interviewing Senior+ software developers, I've often seen them struggle when programming in fresh app environments. I get it โ€“ we are so used to working day-to-day in codebases that have been set up and fine-tuned that it's hard to start from scratch. We are so used to design systems, custom abstractions, linter configurations, etc that it's paralyzing to suddenly work "without a net", so to speak.

I'm currently interviewing and I wanted to make sure I was comfortable working in a fresh project, so I started this one. Pretty soon, though, I started tweaking things the way I like them. So this repository is both a way for me to practice building something from scratch and a way for me to add tooling/systems/abstractions thoughtfully, from first principles.

This project is a React Native app (in Expo) that uses the PokeAPI. I'm not trying to win any design awards, but I'd like the project to be more than just functional. It should look nice, eventually.

I'll blog about this soon, and you can check out the open issues for an idea of where this is going next.

Project Setup

You need Xcode installed to run the iOS simualator. (Or Android Studio, either should work.) Otherwise, you'll need node and yarn installed.

# install node 18.12.0, see https://stackoverflow.com/questions/76157332/getting-jest-errors-typeerror-cannot-redefine-property-performance

# clone the repo

yarn # installs dependencies
yarn ios # runs in the iOS simulator

pokemonpractice's People

Contributors

ashfurrow avatar

Stargazers

Christopher Webb avatar

Watchers

 avatar  avatar

pokemonpractice's Issues

Screen-level layout abstraction

The ListScreen and DetailScreen are very similar. Fetch some data, handle the fetching/error states, and render a view component when complete. Ah, the siren song of abstraction.

There are a lot of different options here. I could get a good blog post out of this one, I think.

Add unit tests

I've avoided these so far because, honestly, React unit tests are pretty boring.

  • Test useFetch. Should be interesting, since fetch is global and will need some fancy Jest spying to stub it out. This is probably the most important thing in this project to test.
  • Screen-level tests. Stub the network response, make sure it renders a view with that response, etc.
  • Component-level tests. When the user taps a row from the list view, does it navigate to the next screen? Etc.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.