Find out your First Gen Pokemon details, search it by the name
Refer to db/README.md
to find out how to initialize database
Pokedex
Usage:
go run . csv <csvfile> <PokemonName>
go run . sqlite3 <dbfile> <PokemonName>
go run . postgres <PokemonName>
go run . -h | --help
Options:
-h --help Show this screen.
The purpose of the challenge is for you to demonstrate your Golang skills. This is your chance to show off everything you've learned during the course!!
You will build and deliver a whole Golang project on your own. We don't want to limit you by providing some fill-in-the-blanks exercises, but instead request you to build it from scratch. We hope you find this exercise challenging and engaging.
The goal is to build a REST API which must include:
- An endpoint for reading from an external DB or API
- Write the information in a CSV file
- An endpoint for reading the CSV
- Display the information as a JSON
- Unit testing for the principal logic
- Follow conventions, best practices
- Clean architecture
These are the main requirements we will evaluate:
- Use all that you've learned in the course:
- Best practices
- Go basics
- HTTP handlers
- Error handling
- Structs and interfaces
- Clean architecture
- Unit testing
- CSV file fetching
To get started, follow these steps:
- Fork this project
- Make your project private
- Grant your mentor access to the project
- Commit periodically
- Apply changes according to the mentor's comments
- Have fun!
We provide the delivery dates so you can plan accordingly; please take this challenge seriously and try to make progress constantly.
It’s worth mentioning that you’ll ONLY get feedback from the review team for your first deliverable, so you will have a chance to fix or improve the code based on our suggestions.
For the final deliverable, we will provide some feedback, but there is no extra review date. If you are struggling with something, contact your mentor and peers to get help on time. Feel free to use the slack channel available.
Based on the self-study material and mentorship covered until this deliverable, we suggest you perform the following:
- Select architecture
- Read a CSV or DB
- Handle Errors for CSV/DB (not valid, missing, incorrect connection)
- Use best practices
Note: what’s listed in this deliverable is just for guidance and to help you distribute your workload; you can deliver more or fewer items if necessary. However, if you deliver fewer items at this point, you have to cover the remaining tasks in the next deliverable.
- Store read CSV/DB in a structure
- Loop structure and print data
- Send to own API data read
- Add unit testing
- Refactor
Important: this is the final deliverable, so all the requirements must be included. We will give you feedback and you will have 3 days more to apply changes. On the third day, we will stop receiving changes at 11:00 am.
For submitting your work, you should follow these steps:
- Create a pull request with your code, targeting the master branch of the repository golang-bootcamp-2020.
- Fill this form including the PR’s url
- Stay tune for feedback
- Do the changes according to your mentor's comments
- Go Tour
- Go basics
- Git
- Tool to practice Git online
- Effective Go
- How to write code
- Go by example
- Go cheatsheet
- Any talk by Rob Pike
- The Go Playground
- Golang Docs
- Constants
- Variables
- Types
- Functions
- Error Handling
- Modules
- Go tools
- More Go tools
- Clean Architecture
- For Loops
- Arrays and Slices
- Conditional statements: If
- Multiple options conditional: Switch
- Maps
- Structures
- Structs and Functions
- Pointers
- Interfaces
- Interfaces
- Methods
- Failed requests handling
- Packages
- Unit testing
- Functions as values