TBWA News

Nicholas Brown

Fullstack Engineer
Web Designer
Web Developer
CSS3
Django
Django REST framework
JavaScript
Vue.js

This projected consisted of development of the TBWA News REST API and JSx application powering the frontend of TBWA.



The development of this project was split into two phases. The first phase included development of the backend and naturally the second phase included development of the frontend to display the queried resources served by the backend in response to the aforementioned queries.

Backend:

The backend consisted of a REST API, the Django Web Framework, Python as the programming language, PostgresSQL for the database, various backend tools and services ranging from DevOps configurations to linting to ensure code quality and longevity.

To develop the REST API powering the ad news feed of TBWA the Django REST Framework was utilized which consists of defining serializable Django Models that may serialized for deliverance of object / model derived fields in the JavaScript Object Notation (JSON) format.

The REST Framework utilized existing Django Models that were configured using standard Python class methodologies per standard Django development procedures wherein the object data these classes represent were penultimately stored within a PostgreSQL database via the Django Object Relational Mapping (ORM) system.

With these models in place and a functioning database CRUD operations were permissible by defining Django Views that could be requested with or without proper payloads in accordance with the particular HTTP Request methodology used (GET, PATCH, POST, DELETE, UPDATE).

The REST API implemented standard best practice should as authentication and object permissions along with protective measures such as rate throttling.

With respect to the software development lifecycles (SDLC) this project utilized GitHub as the version control system (VCS) utilizing Atlassian's GitFlow for modifying and pruning the assets revision tree.

Development was performed according to recommended feature branches and integrated with webhooks / continuous integration for testing code quality.

To monitor the overall code coverage of the repository metrics were ascertained with codecov for test coverage and tests were written utilizing the standard Python module library "unit test" which integrates seamlessly with Django.

General monitoring was achieved with Sentry and slack we hooks for timely notifications of issues that may have arisen. An initial MVP was developed on Heroku.

For continuous integration and continuous deployment (CI / CD) TravisCI with a Tox script configuration was initially used eventually migrating to CircleCI. While similar in function TravisCI and CircleCI have slightly different pros and cons. CircleCI was found to be the more natural fit and hence settled upon for all future development beyond initial scope.

The containerization of all development configurations and ultimately the environment as a whole for cross platform development consistency across future additional technical assets (developers working on the project) was initiated via Docker.

Frontend:

With the above backend in place and functioning per passing unit testing the frontend was developed utilizing the Vue.js JSx web framework.

Queries were made in accordance with standard Vue development practices and the requested data, under the assumption no server or other request errors had occured, was iterated upon and displayed within the frontend to form the news feed as desired.

The styling of the news feed and site as a whole was performed by writing HTML and CSS per standard website development practices utilizing design system tokens for consistency across various components.

Modern responsive design was achieved utilizing modern CSS features such as Flexbox for intrinsic grid wrapping and stacking. When necessary media query adjustments were applied to correct the logical flow of elements and reposition them upon the screen particularly at smaller screen sizes as expected.

Partner With Nicholas
View Services

More Projects by Nicholas