Code Monkey home page Code Monkey logo

codeclinics's Introduction

CodeClinics

NOTE: This project is no longer being maintained
NOTE: CodeClinics is intended to run on Linux (Works best on Ubuntu)

1. Installing CodeClinics

There are 2 ways to get CodeClinics on your computer, the first method is suggested if you do not intend to change the program at all, the second method being if you want edit the source code to suit your needs better.

1.1 Download

1.1.1 Download the binary

Head to the releases tab and download the latest binary (code_clinic)

download_bin

1.1.2 Download source files

Fork and clone this repo to your device!

1.2 Installation for Non-Binary Users

To install dependencies you can run

$ make setup

Or you can use pipenv - Suggested if you are planning to work with this codebase

$ pipenv shell
$ pipenv sync

You can now follow along with the binary users (You will just instead be using python and code_clinic.py)

1.3 Installation For Binary Users

Open your terminal, your file should be in your downloads so head over to that directory and do the following(this might vary on devices)

$ cd ~/Downloads/
$ chmod +X code_clinic
$ sudo cp code_clinic /usr/local/bin/

You should now be able to run code_clinics, by doing the following

$ code_clinic --help

The output should be similiar to the following

help_command

You can then proceed to do the following

$ code_clinic install

You will then see this:

credentials

Paste your credentials file (Refer to 2. Google Calendar API) into the storage directory, and press enter (Remember to enable show hidden files)

If you did this step correctly, you will see this:

welcome

One of the parts of the installation will also require your google calendar ID (Refer to 2. Google Calendar API if you are unsure what this means)

2. Google Calendar API

This program uses the google calendar API and this unfortunately means for any user using this program, they have to familiarize themself with the API to get this prorgram running. This means you need to create a project on the Google Calendar API.

When you have created this project you also need to create an client secret and download the client secret - rename it to 'credentials.json' - and store it in the storage directory.

You can then proceed to create a central calendar that will be used to store all the events in a middle point and go to its settings and find the calendar ID, copy this ID and keep it somewhere for when you install code_clinics.

3. Use the help command

Use the help command to find out more about how to use this program and have fun.

4. Command Examples

4.1 Login

login

4.2 Volunteer

volunteer

4.3 Book

book

4.4 Calendar

calendar

4.5.1 Cancel Volunteer

deleted

4.5.2 Cancel Student

[No Image] - You can run this command using

$ code_clinic cancel --member-type student

codeclinics's People

Contributors

evanlab02 avatar

Stargazers

 avatar

Watchers

 avatar

codeclinics's Issues

Volunteer - Update Personal Calendar

Scenario 2

Given that a user is logged in
when I use the volunteer command
then the program should download the latest events
and save the data in preferred format
and let me book a code clinic and update my personal calendar
based on the info I enter

Logout - a user is not logged in

Scenario 2

Given that a user is not logged in
when I use the logout command
then the program should inform me no user is logged in

Settings - Calendar ID

Scenario

Given the user has a settings file installed
when the user runs the install command
then it should let the user set the central calendar ID

Program Arguments

Program Arguments

Program arguments will be the primary source of input - sys arguments being the command selected to use.

Calendar Command

Narrative

As a user
I want to be able to view my calendars
So that I can be sure when to schedule my code clinics

Login Command

Logging in

Narrative

As a user
I want to be able to login
So that I can attend code clinics

Scenario 1

Given that I am not logged in
when I use the login command
then the program should log me in using my google account
and create a token on my device

Scenario 2

Given that a user is logged in
when I use the login command
then the program should confirm if I want to logout the current user

Settings - Installation

Scenario

Given the user uses the install command
when the settings file is not installed
then the program should install the settings file.

Create Virtual Enviroment

Our virtual environment

I will use Pipenv to create the virtual environment - Primarily to manage dependencies.

Calendar - Tabulate Display

Scenario 5

Given that a user is logged in
when I use the calendar command
then the program should download the latest events
and save the data in preferred format
and display the data using tabulate.

Credentials Check

Scenario

Given the credentials file is not on the device
when the user runs the program
then it should prevent any commands from being processed
and display a message to inform the user to install the credentials

Calendar - JSON Display

Scenario 3

Given that a user is logged in
when I use the calendar command
then the program should download the latest events
and save the data in preferred format
and display the data in JSON format.

Calendar - Rich Display

Scenario 7

Given that a user is logged in
when I use the calendar command
then the program should download the latest events
and save the data in preferred format
and display the data using rich tables.

Calendar - Download JSON

Scenario 1

Given that a user is logged in
when I use the calendar command
then the program should download
and save the latest JSON data

Volunteer - Create a event

Scenario 1

Given that a user is logged in
when I use the volunteer command
then the program should download the latest events
and save the data in preferred format
and let me book a code clinic for when there is a time available

Login - Logging in for the first time

Scenario 1

Given that I am not logged in
when I use the login command
then the program should log me in using my google account
and create a token on my device

Logout Command

Narrative

As a user
I want to be able to logout
So that I can be sure no one else will use my account

Scenario 1

Given that a user is logged in
when I use the logout command
then the program should log the user out
and delete the token.json

Scenario 2

Given that a user is not logged in
when I use the logout command
then the program should inform me no user is logged in

Volunteer Command

Narrative

As a user
I want to be able to volunteer
So that I can offer code clinics to others

Calendar - Download CSV

Scenario 2

Given that a user is logged in
when I use the calendar command
then the program should download the latest events
and save the data in CSV format.

Calendar - CSV Display

Scenario 4

Given that a user is logged in
when I use the calendar command
then the program should download the latest events
and save the data in preferred format
and display the data in CSV format.

Logout - a user is logged in

Scenario 1

Given that a user is logged in
when I use the logout command
then the program should log the user out
and delete the token.json

Directory Installation

Directory Installation

Scenario 1

Given the storage directory has not been created
when I run the program for the first time
then the program should install the storage directory.

Scenario 2

Given the storage directory has been created
when I run the program for the first time
then the program should do the command given to it.

Settings - Check

Scenario

Given the settings file is not installed or setup correctly
when the user runs the program with any command
then it should display an error that the settings file is not installed
or setup correctly

Calendar - Primary Calendar Addition

Scenario 6

Given that a user is logged in
when I use the calendar command
then the program should download the latest events from both the user calendar
and code clinics calendar
and save the data in preferred format

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.