How to build great apps

A project growth at LumApps

Web application development must go fast and clean. At LumApps, to ensure a good quality of our products, to be sure our entire team collaborates efficiently, we inspect each step of the development process and define guidelines and tools.
To learn more about technologies we use, read our article on GCP & Angular.

Tools don't do all the job, but having a good toolbox saves your time... and mind.

Choose your work tools

We provide new and efficient machines for our staff. So we each have a Linux or Mac laptop, everyone can choose, and a second large screen: the main workstation is comfortable for the day to day work, but we keep mobility and flexibility...

alt At LumApps, you can even turn your screen and ask PacMan for help!

Good text editor or IDE can take much time to be familiar with. So at LumApps everyone can choose its favorite editor to do the job: SublimeText, PyCharm, Eclipse, Vi, Emacs, (place your own: jobs@lumapps.com :-) ).

Open the code


We centralize all our projects with the decentralized version system Git and use the well known platform Github. This way, we can collaborate with our team and external contributors on our open source projects lumX.

Git is a flexible tool, so we can choose our work flow for each project: from simple merge-branch to pull request based work flow. Even better, each developer can choose its local work flow as long as (s)he follow the group work flow when pushing on the master repository.
Github offers some additional tools to facilitate project life: issues management and wiki. The pull request interface is clean and useful.

To simplify communication and allow everyone in the staff to participate or switch easily on projects, the project structure is well defined: split back and front, file naming and coding convention, ... New ideas are welcome to improve this guidelines.

Share and collaborate

We are born on Google technologies so our main business platform is of course Google Apps for work.

All documents are shared in Google Drive and business libraries are managed by LumDocs File Server. We ensure that our documents remain LumApps properties.
No more lost documents, no waste of time by searching a project file.
It's an easy way to get efficient collaboration.

Inspect, Test and debug

At each step of the development process, you need to be sure your code does what you think it must do.
Manual testing could be a solution, but each programming language offers you automated test:

  • unittest for python
  • jasmine for angular

For functional tests, we use LumRest: describe REST API calls with all required information, then the expected response. By chaining calls, you can simulate the user scenario and test large functional scopes.

Code has bugs, inevitably. Debugging is inherent to coding. So useful tools exist to inspect what your code really does!
Don't bother with print or console.log(..) for debugging tasks: you pollute your code and at a time you will see them on the production server (unless you have a good pre-commit script).

Use modern tools instead:

  • pdb for python
  • IDE specific debugging tools (see pycharm for example)
  • browser's developer tools

By setting breakpoints, these tools allow you to inspect the whole context and run the code step by step. With some plugins you can even inspect Angular scope!

Save your time: Gulp

While project structure becomes more complex, with many modules, sub modules and dependencies, you need to keep each part on his own well structured folder tree.
This is good for development, but for production your application needs to be compiled, not like a C project, but like a modern web app project: merge css and javascript, minify css and javascript, install required external libraries, put all images in a single folder, etc.

Automation is then the key to do this work. With Gulp you can run various 'tasks'. Each task is responsible for only one action. By chaining these tasks we can create a 'build' pipeline for our css files for example:

  • grouped all css files in one.
  • minified the resulting css file
  • moved the minified file to a 'dist/' sub-folder

You can manipulate all your project files this way, and with meta task you can deploy your entire application with one command.

The master piece of this tool is to have a 'watcher': everytime a file is modified in your project tree, the corresponding tasks are run.
Your development environment simulates the production server, avoiding some bugs. Furthermore, we ensure all developers share the same configuration and development environment.

Save your mind: Jenkins

Application deployment could be hard and boring, tests need to be run frequently on your master branch (at least before a build !), maybe you need some metrics about your project (test coverage, ...), or other long and repeated operations on your code.

Jenkins allows you to define all these jobs and run them manually, periodically or using Git hooks. With this single tool, we manage all our project deployments. Jobs could be copied, have variables, may be linked, and send you reports: define once and enjoy !

Jean-Sebastien Sevestre

Jean-Sebastien Sevestre

View Comments
Navigation