Giter VIP home page Giter VIP logo

volog's Introduction

Volog logo

Getting Started

These instructions will get you a copy of the project up and running on your local machine for development and testing purposes. See deployment for notes on how to deploy the project on a live system.

Installing

A step by step series of examples that tell you how to get a development environment running.

 - First, ensure you have python installed as well as your preferred IDE.
 - Clone the repository onto your local machine.
 - In order to install all the backend (python) project dependencies, you need to set up a pipenv environment and use it as the interpreter for the project. Do so by running *pip install pipenv* and *pipenv install*. For more specific instructions look up how to use pipenv with your IDE.
 - In order to install the frontend (javascript) dependenices, you need to (1) ensure you have npm and webpack installed, (2) cd into frontend, (3) npm -i to install all the dependencies, (4) npm run dev to let webpack do its thing.
 - To initialize the database and run migrations, run the following custom command: manage.py vologo
 - Finally, cd into Volog and run the server using the "manage.py runserver" command.

Screenshots

Log In Page

Student Page

Admin Page

Mentor Page

Coding style

Python

PEP 8 applies to all python code. Read more about it here.
Below are some essential python style tips:

  • CamelCase for class names, snake_case for basically everything else
  • Keep things as obvious as possible - don't make acronyms unless you absolutely have to, write explicit variable names e.t.c.
  • DRY (don't repeat yourself) is essential. If you need to write the same code twice, you can probably just refactor and avoid doing so.
  • Speaking of refactoring - do it often, and carefully. Since this is a volunteer sustained project, there will always be engineers cycling through so keeping the code base accessible and clear is one of, if not the, most important parts of the development process.
  • In relation to above, try and document any major decisions you make in the meta data files (i.e devblog.txt). The more of the development history is documented, the easier it will be for those who work on your code next.

When in doubt, refer to The Zen of Python, by Tim Peters:

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!

HTML & CSS

Refer to the Google HTML/CSS Style Guide.

JavaScript

Check out the Google JavaScript Style Guide.

Deployment

Demonstrate how to deploy the website to production.

# TODO

Contributing

The base workflow is as follows: Create New Branch -> Make Changes -> Commit/Push Changes to Your Local Branch -> When Done With Yor Work, Submit Pull Request and Request Review From Relevant Teammate -> Get Feedback -> Make Changes To The Branch If Necessary (Do NOT Open a New Pull Request) -> Get Merge Approval -> Merge Your Branch with Master -> Rinse and Repeat

Additionally, here are some essential tips for making your contributions professional and clear:

  • When making a new branch, title it after the feature/task you are working on. Do not title branches after your name or other non-descriptive things. The goal of the title should be to communicate to your teammates what the branch is for and, hopefully, hint at the files that were changed.
  • Ideally, each commit should be entirely self contained and only affect one part of the codebase. It's not the end of the world if multiple changes are a part of the same commit, but generally speaking the more the commit changes the functionality of the website, the more important it is to have it be it's own thing.
  • When you are done working on your branch, open a pull request and (unless it's something tiny like a readme edit) request a teammate to review your changes and merge the branch into master.
  • Do not push to master directly. The only exceptions to this are (1) README edits, (2) documentation updates and (3) typo fixes.
  • As the saying goes, "measure twice, cut once". Before finalizing any contribution, always double check your work and make sure you did not break anything in the process. Some of the things you should verify are (1) does the server run, (2) do all the pages load properly and (3) does the feature you were working on function as expected. If they are available, run all the tests before submiting a pull request.

All version control is done with Git. If you are new, we recommend watching this video for a basic introduction. Additionally, this official github guide serves as a good introduction to the basics of the git workflow.

Contributors

David Nesterov-Rappoport : NullDefault

Mahmoud A. Alminawi: malminawi

Déja Santana : d-daring

Perrfection Peterkin : Perrfection

Acknowledgments

  • Hat tip and thanks to anyone whose code was used!

volog's People

Contributors

d-daring avatar dependabot[bot] avatar malminawi avatar nulldefault avatar perrfection avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

volog's Issues

pipenv

Hey @NullDefault, I was wondering if it would be a good to use pipenv for the project instead of depending on requirements.txt. Pipenv allows for better dependency management.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.