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:
nvm
(our suggested way to use Node.js) on your
machine. Verify that nvm
is installed by running:$ command -v nvm
$ nvm i 10.10
npm
by running:$ node -v
10.10.0
$ npm -v
6.13.3
$ npm i -g lerna
cd
into this repository locally by running:$ git clone https://github.com/tutorbookapp/tutorbook.git && cd tutorbook/
develop
and cd
into our
app packages by running:$ git checkout -b $my_branch && cd src/app/packages
cd
into your desired package, make your changes, commit them to
your branch off of develop
, 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