Skip to content

Dialektor is a tool for recording audio and creating a ledger in order to study the changes overtime.

License

Notifications You must be signed in to change notification settings

willowaway/Dialektor

Repository files navigation

Dialektor

Version: 1.0.3
Dialektor is a tool for recording audio and creating a ledger in order to study the changes overtime.
Under supervision of Dr. Rafal Jabrzemski.
MIT License

Possible Usages

  • Learning languages, instruments, and speech therapy
  • Researching dialects and linguistics
  • Professions involving sound
    • Speech Therapist, Musician, Linguist, Translator, Post Production, Recording/Studio Engineer, Audio Forensic Engineer

Table of Contents

Setup Docker for Local Development

Install Git here
Clone the GitHub Repo

git clone https://github.com/will7hughes/Dialektor.git

Change directory to the Dialektor project
Commands for Mac Windows and Linux

cd Dialektor

Install Docker Desktop here

Follow installation prompts from Docker desktop for extra configuration setup.
For example, I had to copy/paste and run a powershell command for WSL.
I also had to do step 4 from this site here

Restart your computer

Create the container

docker-compose create

Startup the container

docker-compose up

Verify that there are two containers up db and web

docker ps

Open a new powershell window
Enter the web container
You can either enter the web container through powershell or through Visual Studio Code at this point
If you want to connect via Visual Studio Code and run the rest of the commands on VS Code Terminal
Go to Visual Studio Code Setup

docker-compose exec web sh

Create first time migrations on the personal app.
This create the tables defined in models.py and creates them in our PostgreSQL database.
You only have to do this for first time setup
Every other time you just do the migrations without specifying the personal app
Django will know that personal app exists and will make the migration along with the default app

python manage.py makemigrations personal
python manage.py migrate personal

Apply database migrations to the default app.
This creates the tables defined in our django application and creates them in our PostgreSQL database we just configured.

python manage.py makemigrations
python manage.py migrate

Create a superuser to login to the django admin console

python manage.py createsuperuser

You can now go to http://127.0.0.1:8000/admin and login with the superuser you created
If you forget your password. Just re-run the createsuper command above
You have now completely setup the development environment
Table of Contents

Visual Studio Code Setup

Download Here: https://code.visualstudio.com/download
Install Pluggin Remote - Containers: https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers
Make sure Docker is running
If you close Docker with Ctrl+C your VS Code window will disconnect

docker-compose up

If you develop without being connected to the Docker you will have to rebuild the docker web container for changes to make effect
Note that code changes take immediate effect when you save a file
If you write something that throws an error. You may have to develop locally, without Docker
Fix the error. And rebuild the web container
To rebuild web container run

docker-compose build web

Once Docker is up and running and is not throwing any errors
Connect to the Docker Container in VS Code
VS Code -> View -> Command Palette -> search Attach -> Attach to Running Containers
It will then prompt you to select db or web
Select web
Navigate to the folder
VS Code -> File -> Open Folder -> /code/ -> Ok
You can now edit and develop right from VS Code as if you were on your local machine
Make sure that you are connected to the Container by looking at the bottom left green area
It should say Container dialektor_web (/web)

Connect to VS Code terminal to startup localhost django website
VS Code -> Terminal -> New Terminal
Change directory

cd code

Start localhost development website

python manage.py runserver

You can now go to http://127.0.0.1:8080 to view your localhost website while you develop
You can shutdown the website by going to the console and using the key combination

Ctr + C

Table of Contents

Development Lifecyle

Create a feature branch
DO NOT WORK ON THE MASTER BRANCH ON YOUR LOCAL DEVELOPMENT!!!!!!!!!!!
DO NOT MERGE TO THE MASTER BRANCH ON YOUR LOCAL DEVELOPMENT!!!!!!!!!
DO NOT TOUCH THE MASTER BRANCH ON YOUR LOCAL DEVELOPMENT!!!!!!!!!!
Note that you can run these git commands directly from the VS Code terminal while connected to Docker web component

git branch 1.0.1-john

The naming convention for a feature branch is X.X.X-firstname.
Where X(major)-X(minor)-X(point) are version codes

Checkout your feature branch

git checkout 1.0.1-john

Assign yourself on an issue in Github or create an issue that describes what you will do in this update
Code your update, feature, bug fix, ui fix, etc
Add changes to staging on git
Frequently add, and commit you code

git add *

Verify that you are adding the files you have updated

git status

Commit the changes. Add a descriptive message about a feature, bug fix, ui change, etc.

git commit -m "My super duper descriptive message about all the new goodies I just did"

Pull changes from remote repo
We will pull the master branch so that we can merge changes to test that they work with our changes

git pull origin master

Merge master branch into our feature Branch
If there are conflicts. Resolve them manually by deleting the markup that GitHub has created and manually looking at the differences between the two options
Delete one of the options/conflicts and keep the other
It is easier to merge the master branch into your feature branch by using the Pull Requests feature on the GitHub website
To use that feature instead of doing it on the console/terminal, push your feature branch, create a Pull Request
Change the base: master to master and compare: 1.0.1-john to your feature branch
Create the Request, Apply, Merge, Resolve

git merge master

Push changes to remote repo.
DO NOT WORK ON THE MASTER BRANCH ON YOUR LOCAL DEVELOPMENT!!!!!!!!!!!
Always develop on a feature branch. For example, 1.0.1-will
See Development guide above for checking out or creating a feature branch

git push origin 1.0.1-will

Create a pull request on github
I Will will manage the pull requests for the first couple weeks for quality assurance
I will use the pull requests to merge the feature branch into the master branch
I will also be managing Kubernetes deployment until you've made several pull requests and shown you've got that down
Don't worry about production deployment until you've handled local development
Table of Contents

Command Reference List

Docker

Startup

docker-compose up

Create the Container

docker-compose create

List Running Apps

docker ps

Enter the web App

docker-compose exec web sh

Enter the db App (Local PostgreSQL Database)

docker-compose exec db sh

Build/Rebuild apps

docker-compose build

Table of Contents

Django

Start Localhost Dev Site at
http://127.0.0.1:8080
Admin: http://127.0.0.1:8080/admin
NOTE: Must be run inside Docker web app
NOTE: Can be run inside Visual Studio Code terminal when VS Code is connected to Docker Container web app

python manage.py runserver

Shutdown Localhost Dev Site
NOTE: Must be used on same terminal/console window that ran the server with the above command

Ctrl + C

Stage Database Migrations
NOTE: Change out personal for whatever app that contains the models.py for the Database Model that you have changed
NOTE: You can leave out personal to makemigrations for all apps. Provided this is not the first time you are making the migrations

python manage.py makemigrations personal

Migrate Database
Applies the migrations that were staged from the above command
NOTE: You can leave out personal to migrate for all apps. Provided this is not the first time you are migrating

python manage.py migrate personal

Create Admin
http://127.0.0.1:8080/admin

python manage.py createsuperuser

Table of Contents

GitHub

Create a Branch

git branch BRANCH_NAME

Checkout Branch

git checkout BRANCH_NAME

Create and Checkout Branch

git checkout -b BRANCH_NAME

Add Changes to Staging Area

git add *

View Staging

git status

Commit

git commit -m "My super duper descriptive message about all the new goodies I just did"

Pull

git pull origin BRANCH_NAME

Merge

git merge master

Push

git push origin BRANCH_NAME

Table of Contents

Dialektor Development Team

Under supervision of Dr. Rafal Jabrzemski

Group 11 CS 4273 Software Engineering Capstone Project
Will Hughes
Lieu Dean
Jason Myers

Group APYZ CS 4263 Software Engineering Capstone Project
Adam Gracy
Phillip Voss
Yashar G. Ahari
Zachary Arani
Table of Contents

Useful Links and Sources Cited

To understand the decision to use Docker for our development environment: https://www.untangled.dev/2020/05/30/why-docker-local-development/
Docker Basics https://vsupalov.com/6-docker-basics/
Docker Setup for Django: https://www.untangled.dev/2020/06/06/docker-django-local-dev/
Kubernetes Setup Tutorial: https://cloud.google.com/python/django/kubernetes-engine
Google Cloud Console Dashboard: https://console.cloud.google.com/home/dashboard
Django Documentation: https://docs.djangoproject.com/en/3.1/
Django Getting Started Series: https://docs.djangoproject.com/en/3.1/intro/tutorial01/
Django Table of Contents: https://docs.djangoproject.com/en/3.1/contents/
Django Project Structure: https://django-project-skeleton.readthedocs.io/en/latest/structure.html
Django Settings: https://docs.djangoproject.com/en/3.1/topics/settings/
Django Views: https://docs.djangoproject.com/en/3.1/topics/http/views/
Django Class Based Views: https://docs.djangoproject.com/en/3.1/topics/class-based-views/
Django Conditional Views: https://docs.djangoproject.com/en/3.1/topics/conditional-view-processing/
Django Forms: https://docs.djangoproject.com/en/3.1/topics/forms/
Django Templates: https://docs.djangoproject.com/en/3.1/topics/templates/
Django Migrations: https://docs.djangoproject.com/en/3.1/topics/migrations/
Django Files: https://docs.djangoproject.com/en/3.1/topics/files/
Django Caching: https://docs.djangoproject.com/en/3.1/topics/cache/
Django Security: https://docs.djangoproject.com/en/3.1/topics/security/
Django Rest Framework: https://www.django-rest-framework.org/tutorial/1-serialization/
Django Serialization: https://docs.djangoproject.com/en/3.1/topics/serialization/
Django How-To Guides: https://docs.djangoproject.com/en/3.1/howto/
Yashar's Original Repo: https://github.com/yasharAhari/Dialektor
Github Pull Request: https://guides.github.com/activities/hello-world/#pr Makefile Basics: https://www.cs.colby.edu/maxwell/courses/tutorials/maketutor/
Makefile for Django: https://gist.github.com/magopian/4077998
PostgreSQL Basics: https://www.postgresqltutorial.com/

Deployment Notes

If the Kubernetes cluster errors out you may need to re-create it. I had an issue when Kubernetes did an automatic update and I was unable to startup the cluster after the update so I re-created the cluster. Also note that this may have been caused by billing being canceled while the cluster is up. We do not know the exact cause.

  • Also note that you have to do step 1 (a, b) in Set up Cloud SQL from here Useful Commands
kubectl describe pods

Table of Contents

About

Dialektor is a tool for recording audio and creating a ledger in order to study the changes overtime.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published