Skip to the content.

Django Backend Architecture

Learn to create your own portfolio platform like portfoliobox.net - Open-Source Project By Aditya Raj

About this open source project

The open-source project is for the developers who are trying to learn and create an application by following the best practices and paradigms. The project requires familiarity with Python programming language.

This project is based on creating a portfolio website backend in which a user could create his own customizable portfolio and then generate a public link that could be accessed by everyone. However, the updates made in the portfolio could only be possible by the logged-in user corresponding to his own details.

The project’s main aim is to serve a complete set of API that could be used and updated by anyone for creating a similar kind of web application that features creating a custom user model, generating very own models for serving data, to create respective serializers, customizable API’s with selected HTTP methods.


Learn to build a portfolio website backend

Features that are taken into consideration while building.

MVC Architecture: Model, View, Controller


Test-Driven Development



Project outline


Concepts used in the project

You can find the complete API documentation here

Required setup

For development server -

- vagrant - tells what type of server we need
- virtualbox

For application code -

- layer 1: python
- layer 2: Django - provides feature for creating a standard web app
- layer 3: Django rest framework

Utility tools -

- atom editor
- git: version control
- modheader: to modify http headers while testing API

How to Build and run the project

Project Directory Structure

.
├── e
├── get-pip.py
├── LICENSE
├── README.md
├── requirements.txt
├── src
│   └── django_backend_api
│       ├── api
│       │   ├── admin.py
│       │   ├── apps.py
│       │   ├── __init__.py
│       │   ├── migrations
│       │   │   ├── 0001_initial.py
│       │   │   ├── __init__.py
│       │   │   └── __pycache__
│       │   │       ├── 0001_initial.cpython-35.pyc
│       │   │       └── __init__.cpython-35.pyc
│       │   ├── models.py
│       │   ├── permission.py
│       │   ├── __pycache__
│       │   │   ├── __init__.cpython-35.pyc
│       │   │   └── views.cpython-35.pyc
│       │   ├── serializers.py
│       │   ├── sitemaps.py
│       │   ├── tests
│       │   │   ├── __init__.py
│       │   │   ├── public_user_api_test.py
│       │   │   ├── __pycache__
│       │   │   │   ├── __init__.cpython-35.pyc
│       │   │   ├── test_about_api.py
│       │   │   ├── test_certificate_api.py
│       │   │   ├── test_college_api.py
│       │   │   ├── test_portfolio_image_api.py
│       │   │   ├── test_project_api.py
│       │   │   ├── tests.py
│       │   │   └── test_user_profiles.py
│       │   ├── urls.py
│       │   ├── utils.py
│       │   └── views.py
│       ├── db.sqlite3
│       ├── django_backend_api
│       │   ├── __init__.py
│       │   ├── __pycache__
│       │   │   ├── __init__.cpython-35.pyc
│       │   │   └── wsgi.cpython-35.pyc
│       │   ├── settings.py
│       │   ├── urls.py
│       │   └── wsgi.py
│       ├── manage.py
│       └── media
│           └── uploads
│               ├── avatar
│               │   ├── 362af174-310f-4d00-9a30-26fe8d533fdb.jpg
│               │   ├── 825d95dc-efc4-40d7-8954-8e775864348c.PNG
│               │   └── a2c74d16-06dd-4090-aab9-c7f776d1d411.jpg
│               ├── Django-Architecture-Diagram.jpg
│               ├── project outline.png
│               └── schematic diagram and development.png
├── ubuntu-xenial-16.04-cloudimg-console.log
└── Vagrantfile

API examples

Features that one can work on -

Open to Contribute

Please create issue if something that needs to be worked on or someone having trouble using it. This project is open for everyone who wants to bring ideas or contribute.

Find the project useful? ❤️

Support it by clicking the ⭐ button on the upper right of this page. ✌️

License


MIT License
Copyright (c) 2020 Aditya Raj

Permission is hereby granted, free of charge, to any person obtaining a copy of this software, to deal in the
Software without restriction, including without limitation the rights to use, copy and/or sell copies of the
Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of
the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO
THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.