Stuck overflaw is a web application that enables university students to seek assistance and network with other students and lectures.
This web app is built using Python 3, The Django Framework and a PostgreSQL database. Django is a high level Python web framework that encourages rapid development and clean and pragmatic design.
The app implements a combined full stack development web app structure.
This project has been deployed using Heroku at https://be-social-django.herokuapp.com/. The page may load slowly for the first time. This is because the dynos my be sleeping. Please be patient as the page loads for the first time. Also, the app is only responsive on large screens. eg. on a laptop or desktop. Please view the deployed application using a laptop or a desktop computer.
Since this app uses the PostgreSQL database, you need to have it installed in your machine. You can download the package from their website.
Assuming you have all the needed tools, ie. Python3 and Postgresql, following the next few steps will brew and serve your app.
We'll need a database named overflow
for this app. You can create it by running these commands in the psql
terminal.
create database overflow;
Running the following series of commands on a terminal window will get your app ready for the next step.
$ git clone git@github.com:geoffrey45/edunet.git #cloning via SSH
# or clone via HTTPS
$ git clone https://github.com/geoffrey45/stack-overflaw.git
$ cd stack-overflaw
$ source virtual/bin/activate
$ pip install -r requirements.txt
$ python manage.py migrate
Some variables need to be provided by the serving environment. In your project folder, locate a file named .env.example
. Then, rename this file to .env
and edit the necesary details.
Now that you have everything in place, you can serve the app by executing:
$ python manage.py runserver
This app allow a user to do the following main things:
- Ask questions on the platform.
- Read and answer an existing question.
- Create a blog post about any topic.
- View and comment on an existing post.
The user creates an account using a simple page. The page can be accessed at http://127.0.0.1:8000/signup/ on a development server
Users can not contribute to a post unless they are logged in.
Once the users create their account, they are logged in automatically for the first time. We have allowed this for MVP purposes.
On logging in, the user is redirected to the home page.
From the home page, the user can see a list of existing posts displayed as cards. These cards are sorted from latest to oldest.
From the sidebar, the users can perform the following operations:
- search existing posts
- view and edit their profile
- view, modify and delete all their published articles
By hitting New Post from the side bar or New Question from the navbar, the user can create a new post.
Once the user submits the details, the form data is stored in the database and will be displayed on the home as the latest post.
Did you know? You can click on an image to enlarge it.
By clicking on Show this thread on a post card, a user will be directed to a page showing the post details and existing comments.
By filling and submitting the comments form at the bottom of this page, a user can contribute to this single post.
Users can retrieve all the posts created by a certain user by clicking Users under Browse
from the sidebar.
By clicking All from user, the user can get a list of posts displayed as cards.
A user can search through all the posts by submitting the search term in the search form found in the sidebar.
Users can update their posts, by clicking the Update button that only appears on the single post, only if they are logged in.
If users are logged in, they can update or delete their existing posts from the sidebar.
Users can view their profile by clicking Profile button from the sidebar. Users can also update update or delete their profiles from the Account Actions
card found in the sidebar.
We have used Django Python web development framework to build this app. The app offers close to all the expected minimum viable product (MVP) features. The app's UI is not thoroughly polished due to the much effort and time used to polish the MVP logic.
As you may have noticed, most of the actions in the app have no confirmation. eg. the delete post or account action, create account, etc. We only allowed this for MVP purposes. In a production environment, these actions need to be checked to avoid accidental loss of data.
For now, the app is only responsive on a large screen .eg. a computer or laptop screen.
That's it
Did you know? We were planning of using a more industrial approach to this project. We were in the process of developing this project using Flask and Mongo Db Atlas for the APIs and maybe Vue.js for the frontend. We quit mid-way due to to time factors. You can still look at the half-way developed API deployed here and the code in this GitHub repo. (Although the project is not quite documented 😶)
Thank you!