After intensively thinking through problems we, at Deep Impact, build the best-possible and most efficiently-performing solutions. As a result, we develop Web software that optimally addresses the real needs of customers and users. Our Web-development team processes broad experience with frontend and backend technologies.
We integrate specific software solutions yielded by our active research in artificial intelligence into our products. To support our back end development we rely upon NoSql and graph database technologies and utilise Clojure as the preferred programming language. We develop our front end components using React.
Front-end Web development with React
Webpack for optimised Web performance
Web developent leveraged by PostCSS
Redux is employed by Deep Impact at the front end
For our back-end development, we rely on Cojure and primarily NoSQL database technology. Our applications run for the most part under cloud services and are scalable.
Web back-end development with Clojure
Elasticsearch for search-engine capability
NoSQL mongoDB for our back-end-database functionality
OWASP principles for secure Web development
Curiosity is encouraged and nourished at Deep Impact. We never cease experimenting with new technologies and committing ourselves to trying out promising, state-of-the-art approaches, such as CQRS or domain-driven design. We continually strive to extract the very best out of web technology. Our web-development skills remain at a high level of sophistication.
We utilise tested and successful technologies, most preferably open-source offerings. We thoroughly think through the system architecture and modularise content to the extent necessary to effect and maintain separation of concerns. We test throughout each project phase and thereby continually eliminate error. When it comes to implementing small changes, we frequently go live immediately. This approach has three advantages. First of all, there is less to test. Secondly, if bug fixing is necessary, the change is still fresh in the developer’s memory. Finally, deployments are more secure the more frequently they are carried out.
We vigilantly adhere to deploying well-thought-out code that yields as much functionality for as little execution time as possible. We keep ourselves well informed about architectures that favour high performance (e.g. CQRS). We establish intermediate caches to store complex-server responses. Through data compression, image optimisation and the use of sprites we reduce the frequency of server queries as well as the amount of data transferred and thereby improve overall performance. Content is loaded asynchronously and as selectively as possible so that only data that is absolutely necessary is transferred.
The security of your data is a factor to which we attach the highest degree of importance. The measures we take in that regard bring together multiple strategies and technologies, often at the same time. We encrypt data under HTTPS and diligently apply known security recommendations such as the OWASP Top 10. When is becomes necessary, we employ tooling to detect, record and report (logging and monitoring) attempted attacks on the system while hindering its performance as minimally as possible.
In order for software to enjoy a long lifespan, it must be continually maintained and enhanced. We strive to develop software that can be further adapted as flexibly as possible. The most important principle in this regard is to keep the software simple. We also pay heed, though, to the importance of keeping areas of an application, if sensible, separated, thereby enabling each of them to be independently maintained and enhanced.