Welcome to the Runbox 7 project!
Runbox 7 is a next generation webmail app that combines the instant experience of email clients with the versatility of web browsers.
The app is written in Angular 2+ and HTML5 Canvas, using a Perl backend with MySQL storage. This project was generated with Angular CLI version 1.6.8.
Please see the following pages for introductory information:
- The Runbox 7 Project
- The Runbox 7 Roadmap
- Getting started contributing to Runbox 7
- Runbox 7 Feature and Bug Bounty Program
These instructions will get the Runbox 7 App up and running on your local machine, using the Runbox production servers as backend. You can then develop and test changes to the app with a live Runbox account.
To run Runbox 7 you first need to install:
- Node.js
- npm
- Git
Installation instructions for Node and NPM:
- Ubuntu 18.04: https://www.digitalocean.com/community/tutorials/how-to-install-node-js-on-ubuntu-18-04
- OS X: https://blog.teamtreehouse.com/install-node-js-npm-mac
- Windows: https://blog.teamtreehouse.com/install-node-js-npm-windows
- Clone the codebase onto your system:
git clone https://github.com/runbox/runbox7.git
- Change directory into the repository directory:
cd runbox7
- Install dependencies:
npm install
Get started with frontend development without setting up any server, by using the Runbox production servers as backend.
In your repository directory, simply run:
npm start
Then open https://localhost:4200 in a browser and log in with your Runbox account.
To acquire a Runbox account, simply sign up for a free 30-day trial account. If you would like to contribute to the Runbox 7 project longer term, contact us either via Github or Runbox Support with you username and you can get a complimentary Runbox account for development purposes.
For the E2E tests there is a Mock Server that you can also use in development.
To start the server type:
npm run mockserver
And then from another terminal you can start the Angular app using the mockserver as backend by typing:
npm run start-use-mockserver
Run npm run appdev
and you will be able to access Runbox 7 at https://yourvm/appdev
.
This option requires the full Runbox backend, which is not yet open source.
By default running npm start
will use the production environment at https://runbox.com as backend. If you want to use another backend you may change the RUNBOX7_ANGULAR_BACKEND_HOST
environment variable.
Run RUNBOX7_ANGULAR_BACKEND_HOST=https://yourvm.runbox.com npm start
to use the backend of your choice.
You may then access the Angular app at: https://localhost:4200
Run npm run build
. Production bundles will be created in the dist
folder and is ready
to be copied into the production web servers.
Running this command will also permanently modify src/app/changelog/changes.ts
, which contains
a pre-parsed git log
-based changelog. The build script will hint at that and show a suggested way
to commit it. Make sure to use the suggested format -- it will prevent the changelog update
commit from being included in future changelogs.
If you use no-script, remember to whitelist localhost to execute localhost.
Example creating a new module and a component:
npx ng generate module --project runbox7 xapian/SearchExpressionBuilder
followed by
npx ng generate component --project runbox7 xapian/SearchExpressionBuilder
This resulted in the module xapian/search-expression-builder/search-expression-builder.module.ts
which also imported the component.
And this is from the standard @angular/cli docs:
Run npx ng generate component --project runbox7 component-name
to generate a new component. You can also use npx ng generate directive|pipe|service|class|guard|interface|enum|module
.
Run npx ng build
to build the project. The build artifacts will be stored in the dist/
directory. Use the -prod
flag for a production build.
Runbox7's tests are separated into unit tests and e2e tests, and accompanied by a linter checking for common errors and policy tests that check whether your code passes the rules specified in CONTRIBUTING.md.
You can run the individual tests using one of the following commands:
npm run lint
npm run policy
npm run test
npm run cypress-e2e
Or run them all at once with npm run ci-tests
-- this option will run the tests with the same settings as our CI setup,
making sure that any errors will be caught before your code becomes public.
To get more help on the Angular CLI use npx ng help
or go check out the Angular CLI README.
Also check out the tips & tricks page at Tips & Tricks.
Depending on what type of development you wish to do, you may want to set up a Runbox trial account to avoid affecting data stored in your own Runbox account.
We warmly welcome bug reports, feature requests, and contributions via pull requests.
Please see CONTRIBUTING.md for details on the process for submitting pull requests to us.
See also CODE_OF_CONDUCT.md for our code of conduct.
This project is licensed under GPLv3 - see LICENSE for details
- Thanks to the folks behind the Xapian project, an integral part of Runbox 7: https://xapian.org