Tech story

Our technology stack is a solid base for our solutions. There is no place for random choices.

aveneo.SDK


Our Software Development Kit is always the fresh starting point for any new solution. It’s out legacy from many different development ares, which allows us to begin work with many functional components. They are ready to use and within just minutes, could be transformed into a fully-working application. It’s simple and easy, speeds up the development and minimizes the cost. We do not need to reinvent the wheel every time, do we?

Packages

We distribute packages internally (thanks to NuGet and npm) with pieces of software, which are ready to use. We design packages to simply maintain and extend shared code. We also provide reverse compatibility. This allows us to upgrade older solutions with new versions of packages and provide new functionalities, better security and optimized performance. All of this just by updating a package.

Libraries

We have a lot of code that we share between projects, extended framework, as well as our own algorithms, solution patterns, multi-layer design and deployment paths. We share everything that can be re-used internally. During developing we keep high internal standards, documenting the whole process and teaching the team how to use it.

Components

Components provide a complete functionality with full interface and user experience. We can build an application from both sides - backend and frontend. We have our own default template, which allows us to deliver business solutions within days. This can be achieved by using generic forms (automated generation of forms, based on model metadata) and grids with full support for sorting, filtering, ordering, paging and more. Thanks to this we can focus on business logic & business flow.

Users management
Roles
Permissions
Facebook authentication
Google authentication
AppleID authentication
Grid
Generic forms
CRUD
RTSP Server
RTSP Client
Websocket communication
Versioning data
Push notifications
E-mail sender
Web live streming
Video EPG
PVR/DVR
Helpdesk
CMS
Files repository
Payments
Data regionalization
Multi languages
Currencies
Clouds integrations
Tags cloud
Configuration editor
Scheduler
Categories tree

Our code flow

We created unique path of code from developer to production server. We transformed GIT into powerfull code tool with two-step pull requests with different environments for development and production purposes.

Our technology stack


  • All
  • Backend
  • Database
  • Communication
  • Frontend
  • DevOps
dotnet Core
dotnet Core
Backend
TechnologyStack.Backend.Tab.ADO_NET
ADO.NET
Backend
ASP.NET Core (MVC)
ASP.NET Core (MVC)
Backend
ASP.NET MVC
ASP.NET MVC
Backend
Entity Framework
Entity Framework
Backend
Nest - ElasticSearch.NET
Nest - ElasticSearch.NET
Backend
.NET Framework
.NET Framework
Backend
nHibernate
nHibernate
Backend
node.js
node.js
Backend
Xamarin
Xamarin
Backend
MQTT
MQTT
Communication
RabbitMQ
RabbitMQ
Communication
REST
REST
Communication
SignalR
SignalR
Communication
WebRTC
WebRTC
Communication
WebSocket
WebSocket
Communication
ElasticSearch
ElasticSearch
Database
LiteDB
LiteDB
Database
mongoDB
mongoDB
Database
redis
redis
Database
SQLite
SQLite
Database
Microsoft SQL Server
Microsoft SQL Server
Database
Docker
Docker
DevOps
Kubernetes
Kubernetes
DevOps
npm
npm
DevOps
NuGet
NuGet
DevOps
HTML5 & CSS3
HTML5 & CSS3
Frontend
Java Script
Java Script
Frontend
React.js
React.js
Frontend
Redux
Redux
Frontend
SASS
SASS
Frontend
Webpack
Webpack
Frontend

CI & CD

For each project we create fully automated deployments and continoues integrations (thanks to Azure Pipelines and Azure Artifacts). From 2019 we deploy every single one of our solutions in container model - ready for Docker and Kubernetes.

Are you ready to talk about your project?
  • If you only know the need or problem to be addressed by the software, are you able to help?

    Our primary goal is not so much to provide software, but to actually address the needs and solve problems of our customers. Before we start creating a vision of the software's functionality together, we will conduct a deep analysis to reveal the needs. We will then prioritize them based on business values. We will also look for paths to optimize the operation of your business processes, not only from the perspective of the software itself.

  • I am afraid of problems when creating software resulting from my lack of substantive knowledge about this process. Is it right?

    For us, the key value in working with non-technology-savvy clients is to bring them as close to technology as possible. That's why we devote a lot of time and attention to carefully explaining each stage of the software development process. We also provide advice so that design decisions are fully conscious and based on understandable values.

  • I don't know how to manage the budget for software development. What to do?

    Many clients are afraid of disclosing the budget at the early stage of the project, believing that it will negatively affect the valuation of the project. This is the most common mistake and cause of frustration in the software development process. Really defining the budget allows you to look at functional needs from many perspectives. Being aware of the limited budget, we can look for more economical solutions that may not be fully satisfactory, but at this stage they will address the needs and will be sufficient. As the business value of the entire project increases, these areas may be developed, but this does not have to happen immediately. There are several proven solutions that allow for controlled budget management - we will present them and help you with this task as soon as we get to know each other.

  • Will software development using the agile methodology cause delays, blurred goals and increased costs?

    This is one of the most common concerns that arises at the early stage of talks about implementing a new project. In short: no. An agile approach to a project does not preclude setting clear goals and points on the timeline that are to be achieved. However, frequent and small design iterations allow you to obtain the desired functionalities faster with a reduced budget. The combination of lean development with continuous validation of requirements and assumptions perfectly verifies the previous needs analysis. In fact, the analysis progresses with the development of the project and naturally optimizes its scope by limiting unnecessary steps.

  • How do I know if you are technologically capable of working on my project?

    If our portfolio is not enough of an argument, we will be happy to present technological possibilities and talk about the challenges we have encountered over the years of working on other projects and how we found solutions to seemingly unsolvable problems.

  • What should our communication look like during the project?

    In communication with clients, we focus primarily on honesty, openness and transparency. This allows you to avoid understatements while building lasting, mutual trust.

  • How can we manage the project schedule so that it doesn't stretch over time?

    We look at each project on two scales - micro and macro. On a macro scale, we define milestones for modules and functional areas that we want to achieve in specific order and points on the project timeline. On a micro scale, we manage tasks in iterations no longer than 2 weeks, so we have full control over the implementation stage and can dynamically respond to emerging threats by e.g. increasing internal resources.

  • What if my users don't want to use the software we created together, or don't do it as intended?

    Implementation is not the last stage of the software development cycle at aveneo. We help with user training and training. We are the best partner for this because we know all the design assumptions and full mechanics of the delivered solution. This will guarantee satisfaction and understanding of the solution, and will also allow you to collect conclusions from users regarding potential optimizations and new functionalities.

  • How to reconcile the many different roles of software users without internal contradictions?

    For large projects, it is difficult to bring all stakeholders together at every meeting. It is completely natural for different departments to have mutually exclusive expectations. Our role is to collect all the needs and design a solution that will take into account all business processes and reconcile those that stand in opposition to each other into a coherent and logical whole.

  • I have serious concerns about whether the project will ultimately succeed. How to deal with it?

    This is completely normal! Every investment carries some risk. Depending on the source of the concern, additional levels of security should be implemented. For our part, we will try to find tools that will help you get rid of stress and guarantee the success of the project. For example, if concerns concern the functional scope, we suggest identifying the most valuable functionalities and building a small section of the software, and then validating the assumptions and checking in a real environment whether the solution is satisfactory.