A PWA (Progressive Web App) designed to optimize the process required to get a student with a qualified tutor.
After discovering just how un-streamlined the existing process was at the Gunn Academic Center, I decided it could be much more efficient through the use of technology (previously, one would have to manually fill out and turn in a request form to the office and then wait for the AC Staff to match the student with the tutor). Now, Gunn and Paly students can request and message peer tutors from anywhere at anytime, track service hours using a phone or a school-issued laptop, hire professional at-home tutors when necessary, and connect with middle school students all from within our web app.
Read more about me and view the open source code here.
We need help. To contribute to Tutorbook, either go
through our issues or our
Notion task page
to find something that you'd be interested in working on. Then, checkout from
develop
and create a PR for whatever task you've been contributing to.
Our progressive web app
(PWA) primarily
consists of 28 (and counting) subpackages
(included in src/app/packages
) managed by lerna that
are webpacked into three files for distribution
(included in build/app
):
.
├── build
│ ├── app
│ │ ├── index.html
│ │ ├── index.js
│ │ ├── index.css
│ │ └── img
│ │ └── bot.png
│ └── favicon
│ └── manifest.json
└── src
├── lerna.json
├── package.json
└── app
├── package.json
├── package-lock.json
├── webpack.config.js
└── packages
├── app
│ ├── index.js
│ ├── package.json
│ └── styles
│ ├── cards.scss
│ ├── chat.scss
│ ├── profile.scss
│ ├── search.css
│ ├── user.css
│ └── welcome.scss
├── dialogs
│ ├── index.js
│ └── package.json
├── render
│ ├── index.js
│ └── package.json
└── templates
├── index.js
├── package.json
└── templates.html
Our marketing and legalities website consists of 18 (and counting) subpackages
that define Custom HTML Web Components that are used in build/index.html
:
.
├── build
│ ├── favicon
│ │ └── manifest.json
│ ├── legal
│ │ └── index.html
│ ├── index.html
│ ├── index.js
│ └── index.css
└── src
├── lerna.json
├── package.json
└── site
├── package.json
├── package-lock.json
├── webpack.config.js
└── packages
├── site
│ ├── index.js
│ ├── index.scss
│ └── package.json
├── styles
│ ├── search.scss
│ ├── reset.scss
│ ├── general.scss
│ └── package.json
├── legal
│ ├── index.js
│ ├── index.scss
│ ├── index.html
│ ├── package.json
│ └── assets
│ ├── html
│ │ └── terms.html
│ ├── md
│ │ └── terms.md
│ └── generate.js
└── cta-link
├── index.js
├── index.scss
├── index.html
├── package.json
└── templates.html
To set up a development environment for and to contribute to the Tutorbook web app:
- Follow these instructions
to install
nvm
(our suggested way to use Node.js) on your machine. Verify thatnvm
is installed by running:
$ command -v nvm
- Optionally (if you use Vim as your preferred text editor), follow these instructions on setting up Vim for editing JavaScript.
- Run the following command to install Node.js v10.10.0 (our current version):
$ nvm i 10.10
- Ensure that you have recent versions of Node.js and it's package manager
npm
by running:
$ node -v
10.10.0
$ npm -v
6.13.3
- Make sure that you have Lerna installed by running:
$ npm i -g lerna
- Clone and
cd
into this repository locally by running:
$ git clone https://github.com/tutorbookapp/tutorbook.git && cd tutorbook/
- Then, you'll most likely want to branch off of
develop
andcd
into our app packages by running:
$ git checkout -b $my_branch && cd src/app/packages
- Follow the instructions included below to start a webpack development server (to see your updates affect the app live).
- From there,
cd
into your desired package, make your changes, commit them to your branch off ofdevelop
, and open a PR on GitHub.
To webpack the app packages and see your changes
live, run the following commands from src/app/
:
$ lerna bootstrap
$ npm run dev
To start a development server, first install Google's Firebase CLI by running:
$ npm i -g firebase-tools
Then, run the following command from anywhere in the repository and visit http://localhost:5000/ to see your version of the app:
$ firebase serve --only hosting
Note that you might get an error that says you are unauthorized to acces our
Firebase project (tutorbook-779d8
). If you do, that means that you haven't
been added and that you should message Nicholas Chiang (@nicholaschiang on
GitHub or
via email).
To webpack the app packages for production, run the
following commands from src/app/
(this assumes that you've already installed
our dependencies and such):
$ npm run prod
Tutorbook uses Prettier to enforce consistent code formatting throughout the codebase.
A pre-commit hook is used to format changed files found on commit, however it is still recommended to install the Prettier plugin in your code editor to ensure consistent code style.
Our documentation (what you're probably reading right now) is automatically generated by JSDoc 3 using our Minami theme.
To remove and re-generate our documentation, run the following from the root of Tutorbook's repository (this assumes that you have JSDoc installed):
$ make dev
$ make docs
To update our Algolia Docsearch index, first
follow these instructions to
setup your machine (we do not include the .env
file with our Algolia keys in
this repository for obvious security reasons) and then run:
$ sudo make search