Things we built
We love open-source and are always trying to give back to the community. That's why besides this playbook you are reading, we also have other open-source products.
Fix My Django is a library to help Django developers find solutions for common Django exceptions. While developing a Django project, if you get any exception in the development server and fixmydjango.com has a solution for it, this library will display a link to the solution in the error 500 debug template.
As creators of Fix My Django, Vinta developers should add exceptions and their suggested solutions!
More details on how to install and use it can be found here.
Tapioca is an API wrapper maker. It provides an easy way to make explorable python API wrappers. APIs wrapped by Tapioca follow a simple interaction pattern that works uniformly, so developers don't need to learn how to use a new coding interface/style for each service API. You can find a full list of available API packages made with tapioca here.
For more detailed information, check this blogpost about Tapioca.
CDRF is a web-based documentation with flattened information about Django REST Framework's class-based views and serializers. It's heavily based on Classy Class-based View.
It's a customizable boilerplate that comprises Vinta's main tech stack. Here's a list of what we deemed necessary and the technologies chosen to address those needs.
- Backend Framework (Django and Django.js)
- Email Sending (Sendgrid)
- Responsive Styling (Bootstrap)
- Periodic Jobs (Redis and Celery)
- Interactive UI (React)
- Continuous Integration (CircleCI)
- Handling Static Assets (Webpack)
- Static Files Serving (WhiteNoise)
- Database (PostgreSQL)
- Easy Deployments (Heroku Button)
- Logging (Papertrail)
- Automated Quality Assurance (Prospector and ESLint with pre-commit)
We use Celery to deal with tasks in a queue-based fashion. It receives tasks from our Django application, and it runs them in the background. Periodic tasks are scheduled by Celery Beat, which runs them at regular intervals. Django Celerybeat Status is a library that integrates with django admin and displays in a simple GUI when your periodic tasks are going to run next.
Microblog app used to share quick knowledge. This code powers Vinta's "Lessons Learned", running at http://www.vinta.com.br/lessons-learned/.
The posts are created via slack using a custom command and are automatically posted on Twitter.
It's an app for role based permissions. It's built on top of Django's
Permission functionalities and does not add any other models to your project.
We love checklists. That's why we created a bunch of great checklists to guide developers on how to deliver the best possible software.
Even if you have lots of experience and great configuration standards, we know that problems happen. This is a guide on how to build and configure great Celery async tasks, based on Filipe Ximenes' talk Tasks: you gotta know how to run 'em... It contains best practices, resources, and instructions to avoid problems.
Our extensive experience with Django has allowed us to develop a checklist on how to build reusable Django apps. This checklist was based on Flavio Juvenal's talk Qualities of great reusable Django apps.
A useful checklist for when you're facing a data recovery crisis. Based on Laís Varejão's Saving Great Projects first presented at 2017 Python Brasil.
Do's and Don'ts for Pull Requests. Improve code quality and review speed.
Useful checklist for building good Python library APIs. Based on How to make a good library API PyCon 2017 talk.
It's a Django module to easily send templated emails. It allows you to send templated HTML or plaintext e-mails using Django template language, with all the available template tags and filters to easily build your e-mail templates.
A small Django library that provides generic views, viewsets and mixins that extend the Django REST Framework ones, adding separate serializers for read and write operations.
The Web's Most Awesome Directory of Boilerplate Projects
A curated list made for the DjangoCon US talk Preventing headaches with linters and automated checks by Flávio Juvenal.
Community is not only about producing open-source software (and playbooks), conferences are part of it as well. People are encouraged to give back as much as they can. With the interest of developing further exchange with other professionals, Vinta will buy tickets for any technical conferences deemed worthy by the employees, and if one of ours approves a talk in a conference, whether it's local or international, she/he is granted a bonus for their further collaboration in sustaining the community we are a part of. Keeping an eye on conference's submission deadlines helps everyone in doing so.
We keep our blog updated. It helps twofold, we train people on how to write passing on what they've learned, and people from the community see Vinta as a reference, checking us for tips often. That's why whoever learns anything gets incentives to write it down. We count on everyone to keep an eye and say: "I think that's worth a blogpost!" whether in our day-to-day or in a weekly meeting.