Planet Learning is a generic learning system built in Angular & CouchDB.
Link to Angular Doc and Material Design.
The only prerequisite is Vagrant. If you don't know about it, please do some research and try it. After cloning the repository, run vagrant up dev
in the console. Once it's done installing the virtual machine it'll automatically start compiling the app. After about 10 seconds, you can open the app at localhost:3000
.
- Please check out the project page for available tasks to work on.
- Before contributing also be sure to read our style guide
- Please clone the repository rather than forking, unless you're from outside the organization. It's easier for us to collaborate from a new branch on the same repository.
- After cloning the repository please run
npm run install-hooks
to add the git hooks to your local repository. - If you see something that needs work, please create an issue. If the issue is on the frontend, please try to make it specific to one component.
- To work on an issue, create a new branch with a descriptive title.
- Please wait for at least two positive reviews before merging a PR into the master branch
There are two ways for running the tests. The first listed works from the host machine, and the second works after vagrant ssh dev
and cd /vagrant
:
npm run v-test
(from host) or ng test
(from vagrant) - Unit tests
Open localhost:9876
once this is done compiling
npm run v-e2e
(from host) or ng e2e
(from vagrant) - End-to-end tests
Results will appear in the console
On the production Vagrant there is an optional second Planet instance that can be run to test out "Hub" features.
To start the hub: npm run hub-on
The hub will be available at localhost:3200
To stop the hub: npm run hub-off
To set the hub to automatically start on vagrant up
, run the following: npm run hub-boot-on
To disable autostart run following: npm run hub-boot-off
Similarly, we have a few other npm commands that work from the host machine to run the ng
commands from the Angular CLI
npm run v-serve
= ng serve
npm run v-build
= ng build
npm run v-lint
= ng lint
npm run v-lint-fix
= ng lint --fix
This will fix any lint errors that TSLint can automatically fix
Also, the npm start
command can include an additional LNG
variable to serve from different language files. This must be run from within the vagrant (so after vagrant ssh dev
and cd /vagrant
) and runs in the format:
LNG=es npm start
This would serve the app from the Spanish language files.
The ideal solution would be to ssh into your vagrant and run npm install:
vagrant ssh dev
cd /vagrant
npm install
This doesn't always work. If you're having trouble or need to revert to the exact dependencies listed on the package.json, you need to remove all packages then install (after cd /vagrant above, run the commands):
sudo rm -rf node_modules/*
sudo npm install --unsafe-perm
The trailing /*
will remove all files & sub-directories of node_modules. You won't be able to remove node_modules because of the link between the vagrant VM and your host.
Sometimes our custom setup for the _users
database is overwritten by the default or new databases were added in other commits that have not been created in your local environment. If you are seeing errors with lack of authorization or missing databases, you can run the following command to run our database setup script again:
./v-couchdb-setup.sh -u <your admin username> -w <your admin password>
There are two things you can try for this. First is to reinstall the node packages with:
vagrant ssh dev
cd /vagrant
sudo rm -rf node_modules/*
rm package-lock.json
sudo npm install --unsafe-perm
The second is to rebuild the application. First you need to cancel the app in the screen with screen -x
then CTRL-C. Then you can bring the app back up with one of the above commands or in another screen session with screen -dmS build bash -c 'cd /vagrant; ng serve'
.
This project is tested with BrowserStack.