Onboarding
The onboarding process consists on the creation of the following sections as Github issues.
General References
- A Byte of Python (Learn Python)
- Awesome Python (List of Python Resources)
- Getting Started with Django
- Django REST framework
- Pandas
Day 1 - Getting Familiar
- Set up your project environment by following this guide.
- Update REAME.md with the initial setup
- A pull request must include: README.md and a requirements.txt file with the installed python packages
-
Then get familiar with the language:
- Basics
- Operators and Expressions
- Control Flow
- Functions
- Modules
- Data Structures
- Object Oriented Programming
- Input and Output
- Exceptions
- Map, Filter, Reduce
- More Challenge yourself 💪. Do a code challenge in Python3.
Day 2 - Django Tutorial part 1 and 2
Django Tutorial (Part 1, 2) Part 1
- Creating a project
- The development server
- Creating the Polls app
- Write your first view
- Database setup
- Creating models
- Activating models
- Playing with the API
- Introducing the Django Admin
- Use the models to experience with queryset filters available here https://docs.djangoproject.com/en/4.1/ref/models/querysets/
Day 3 - Django tutorial part 3 and 4
Django Tutorial (Part 3, 4) Part 3
- Writing more views
- Write views that actually do something
- Raising a 404 error
- Use the template system
- Write a minimal form
- Use generic views: Less code is better
Day 4 - Django tutorial part 5,6 and 7
Django Tutorial (Part 5, 6, 7) Part 5
- Introducing automated testing
- Basic testing strategies
- Writing our first test
- Test a view
- When testing, more is better
- Customize your app's look and feel
- Adding a background-image
- Customize the admin form
- Adding related objects
- Customize the admin change list
- Customize the admin look and feel
- Customize the admin index page
Day 5 - Django Rest Framework Part 1, 2 and 3
Django REST Framework Tutorial (Part 1, 2) Part 1
- Setting up a new environment
- Working with Models
- Working with Serializers
- Writing regular Django views using our Serializer
- Testing our first attempt at a Web API
- Requests and Responses
- Class Based Views
- Mixins
- Generic Class Based Views
Day 6 - Django Rest Framework Part 4, 5 and 6
Django REST Framework Tutorial (Part 4, 5) Part 4
- Adding permissions to views
- Create a Login API
- Object level permissions
- Authenticating with the API
- Adding a root API
- Hyperlinking our API
- Adding pagination
- Using ViewSets
- Using routers
- Adding pagination
Day 7 - Pandas
- Installing pandas
- pandas overview
- Getting started tutorials
Day 8 - Project
This project consists on the development of a Rest api to manage/views: Authors, Books and Categories.
Requirements
- User needs to be able to manage Authors, Books, and Categories in the app.
- Each Author can have many Books that he/her has written and each book can be included in multiple categories.
- The User should be able to view lists of Authors and Books.
- The Books should be able to be filtered by Author and by Category.
Optional: The App should also include a page to view some basic statistics, like the number of Books per Author, or the number of Books per Category.
Optional: To complicate the models. A book can have many instances and users can request an instance to take home with a requested date.
Acceptance Criteria
- Design the model entity relation for this project:
- use Mermaid, this is supported out of the box by Github's Markdown
- Design the API endpoints, including:
- path
- request
- response
Once the design/planning part has been taken care of and agreed upon, please create tickets/issues for each of the tasks. Having those created, their commits should respect the nomenclature used in the conventional commits:
- if it's a task:
task/<number_of_the_ticket>/small-description
; - if it's a bug:
bugfix/<number_of_the_ticket>/small-description
; - if it's a release:
chore/<number_of_the_ticket>/small-description
.
Read the conventional commits documentation to check more examples and details of each commit type (i.e body, footer, etc).