What We Do

We work with a variety of clients internationally on platforms like Digital Banking, eGovernment and Asset Management. We commit to making the digitization and the digitalization of their product.

Who makes the difference?

Our warriors. With a sword and laptop, we are always ready to fight and defeat all the adversities we face. 

Why we make a difference?

Collaboration. We make a difference because we will work closely throughout the project with you.

What makes the difference?

Focus. Ambition. Motivation.
We have the same purpose, the same goal, the same vibe.

Our solutions

Digital Banking

We help Financial Institutions to modernise their current banking offering into modern digital channels. We integrate these applications into our omnichannel digital banking platform for a perfect integration.

Explore more

Insurance

Our Insurance solution Platform was built using modern technologies in order to provide users of insurance institutions with maximum security and performance. All modules are integrated with our Digital Insurance Platform for a perfect omnichannel experience. 
Explore more

MobilityHub

The MobilityHub runs on standardized data formats, like GTFS, ensuring all stakeholders see MobilityHub best-in-class information wherever they access their information, including passenger-facing apps, third-party solutions, or the MobilityHub platform itself.
Explore more

e-Government

We create Digital Channels that allow citizens to interact with government services fast and safely by providing a set of management tools that allow control and decision making based on real-time information.

Explore more

360 Analytics

360 Analytics is a complete analytics tool that allows all areas of your organization to check technical, usability, and product information in real time. A fundamental tool to gain insights and leverage business, either in terms of technical or sales improvements. 

Explore more

Content Hub

Content Management Hub is an application that allows you to create, edit, and publish content on digital platforms, giving you the ability to modify, remove, and add to it without the need for any development.

Explore more

Join the team

At Nearsoft we pride ourselves on having a close and collaborative team where every opinion matters.
Find your position

Blog

Dia Internacional das Jovens Mulheres nas Tecnologias de Informação e Comunicação (TIC)
Consulting
Apr 27, 2023
Dia Internacional das Jovens Mulheres nas Tecnologias de Informação e Comunicação (TIC)
No Dia Internacional das Jovens Mulheres nas Tecnologias de Informação e Comunicação (TIC) reconhecemos e celebramos o papel importante das mulheres no mundo da tecnologia. O objetivo é defender os seus interesses e encorajar as jovens mulheres a explorar as diversas áreas das TIC, bem como construir uma carreira profissional neste setor.Sabemos que as mulheres ainda estão sub-representadas no setor tecnológico e enfrentam desafios únicos, por isso é essencial que continuemos a apoiar as jovens mulheres na sua jornada pelo mundo da tecnologia, fornecendo oportunidades para aprender, crescer e alcançar todo o seu potencial. Somente assim poderemos construir um mundo mais inclusivo e equitativo, onde as mulheres possam prosperar em todas as áreas.Nós, Nearsoft, somos uma empresa tecnológica dedicada essencialmente ao desenvolvimento de software bancário e que procura sempre apostar no talento feminino, pois consideramos ser uma mais valia, quer para o crescimento da empresa, quer para a sociedade.A Nearsoft é uma empresa tecnológica dedicada essencialmente ao desenvolvimento de software bancário. Procuramos sempre apostar no talento feminino, pois consideramos ser uma mais valia, quer para o crescimento da empresa, quer para a sociedade.Sara Tranquada (33 anos), Ana Alves (27 anos) e Maria Rodrigues (23 anos), colaboradoras da Nearsoft na área de Mobile, Back-End e Design, respetivamente, dão o seu testemunho enquanto mulheres interessadas e ativas no mundo das TIC com o propósito de inspirar gerações mais novas e combater ideias pré-concebidas sobre o trabalho na área da tecnologia.SARA TRANQUADA | 33 anos | Mobile Developer na Nearsoft“Engenharia informática era um curso que eu nunca pensei seguir antes, mas agora não consigo imaginar fazer outra coisa. Estava indecisa sobre que área seguir após terminar o secundário, porque todos à minha volta, nomeadamente, família, estavam envolvidos numa ocupação normalmente associada ao seu género. Quis seguir um percurso académico relacionado com a tecnologia pensando que queria um curso que me pudesse proporcionar um futuro seguro e surpreendentemente, após decidir tirar o curso em Engenharia Informática, gostei tanto que até fui fazer um mestrado.Nos dias de hoje, um engenheiro, para a maioria da população, continua a ser um homem. Mas nem sempre foi assim. Durante a II Guerra Mundial, as mulheres lideraram como engenheiras, mas a situação mudou com o fim do conflito. Torna-se por isso importante que criemos iniciativas para refletir sobre o preconceito dos géneros em informática e engenharia. Tal foi o mote para a redação da minha tese de doutoramento: “Confrontando o número de mulheres na ciência da computação e engenharia: Tornando o preconceito visível”. Desde então sou doutorada em Media Digitais e faço parte da equipa Nearsoft, onde vejo reconhecido as minhas competências num ambiente organizacional saudável.Encontrei o meu lugar no mundo tecnológico e acredito ser possível que mais jovens mulheres possam interessar-se por esta área. O caminho a seguir é o de investirmos na formação dos mais jovens, informando-os da importância da tecnologia e incentivando-os a explorar as áreas das TIC.”ANA ALVES | 27 anos | Back-end Developer na Nearsoft“Há 10 anos atrás, quando me perguntavam que curso gostaria de tirar e em que ambicionaria trabalhar, em nenhum momento pensei em Engenharia Informática. “É coisa de rapaz”, ouvia muitas vezes sobre as engenharias em geral. Até que alguém propôs essa opção e eu, que desde criança sempre quis combater estigmas, pensei para mim mesma, “porque não?”. Decidi desafiar-me e arrisquei numa área que me era desconhecida. Na fase inicial do curso dei de caras com a realidade: em cerca de 70 e muitos alunos, pouco mais de 5 eram raparigas. No entanto, a baixa representatividade feminina deu-me ainda mais motivação para continuar e, atualmente, estou satisfeita por trabalhar com algo que me desafia constantemente. É fundamental que a programação seja lecionada o mais cedo possível nas escolas, considerando que caminhamos para um mundo cada vez mais digital. Tal poderá contribuir para a mudança de perceções menos positivas em relação ao papel das mulheres nas tecnologias de informação.Atualmente trabalho na equipa de backend/middleware da Nearsoft, onde me sinto reconhecida e onde nunca senti qualquer tipo de discriminação ou desvalorização do meu trabalho por causa do meu género. Contudo, a minha realidade não é a realidade de todas as mulheres. Algumas ainda continuam a enfrentar barreiras para serem contratadas ou até mesmo reconhecidas pelo seu trabalho, estando ainda presente a ideia de que homens são mais qualificados para trabalhar no setor tecnológico.Às mulheres que pretendam iniciar neste ramo: não tenham medo nem desistam devido aos estigmas sociais associados a esta área que é maioritariamente desempenhada por homens. Se este é um mundo que de alguma forma vos cativa, arrisquem. O importante é que tenham gosto por aprender uma vez que a aprendizagem contínua é um valor fundamental no segmento tecnológico.”MARIA RODRIGUES | 23 anos | UI/UX Designer na Nearsoft“Este percurso sempre foi do meu interesse e curiosidade, sempre gostei do design e todas as áreas em que intervém. Durante a minha licenciatura viajei por todas as áreas do design como forma de comunicação. Quando cheguei à experiência do utilizador e design interativo fiquei cativada pela infinidade de possibilidades de produtos que podíamos desenvolver. Pude fazer parte de projetos com interação sensorial tal como pude desenvolver a partir do processo de design thinking plataformas digitais para diferentes fins.Como mulher enfrento sempre desigualdades e discriminação, mas na minha área encontramos pessoas de todos os géneros nas empresas. Até sinto que o design é entendido como arte pelos desentendidos, acabando por ser uma profissão percebida como feminina dado que os paradigmas sociais onde vivemos dizem que as mulheres têm um sentido estético maior que o homem. Neste sentido, persiste ainda a necessidade de combater alguns preconceitos, quer para as mulheres que veem as suas competências reduzidas ao campo estético do design, quer para os homens que não são valorizados na área.É necessário perceber que o design não é subjetivo (como algo bonito) mas sim objetivo. É um método de manipulação visual, para tal, nós temos de passar por um processo de conhecimento de quem vamos manipular (posição geográfica, idade, género, classe social, etc.) e a reação que queremos que estes tenham ao produto que estamos a criar, a isto chamamos Design Thinking (pesquisa, análise, empatizar, experimentar e testar). Há uma noção de que o design é só estético e acabamos por muitas vezes não ser inseridos, enquanto designers, nas decisões funcionais dos produtos que desenvolvemos quando o nosso papel inicial é fazer também esse levantamento e análise funcional, a parte mais importante do nosso trabalho.Na Nearsoft faço parte da equipa de Design, onde me sinto integrada e ouvida. O meu papel na empresa é fazer a parte da experiência do utilizador e fazer o hand-off dos documentos de design para os programadores.A quem estiver interessado a seguir a área tecnológica aconselho a que invistam no conhecimento e pesquisa na área, têm muitas opções. Quanto mais estivermos familiarizados com o assunto maiores serão as nossas hipóteses de sucesso.”Desta forma é evidente que a Nearsoft é uma empresa que valoriza a diversidade nas suas equipas e acredita que a inclusão de pessoas com diferentes origens, perspetivas, habilidades e géneros é fundamental para alcançar o sucesso em um mercado global cada vez mais competitivo. A presença de quatro mulheres da Nearsoft na Web Summit 2018 é um exemplo claro do nosso compromisso de promover a diversidade e inclusão nas nossas equipas e em toda a indústria de tecnologia. As quatro mulheres que fizeram parte de uma equipa diversificada revelaram ser um grande contributo para o sucesso da participação da empresa no evento de tecnologia mais importante da Europa. Assim, destacamo-nos pelo exemplo pelo que é com um sentido de responsabilidade que a Nearsoft, enquanto empresa tecnológica, irá continuar a participar nos esforços para uma maior consciencialização da sociedade relativamente ao papel importante das mulheres no mundo das TIC.
Tatiana
Tatiana Andrade
Human Resources Specialist
5 Banking Trends to Watch in 2023
Finance
Apr 11, 2023
5 Banking Trends to Watch in 2023
As the banking industry continues to evolve, we are seeing new trends emerge that will shape the future of finance in 2023 and beyond. At Nearsoft, we are always at the forefront of disruption, so we’ve compiled a list of the top 5 banking trends that we believe will transform the industry in the next year. Digital Transformation Goes Mainstream: With the pandemic accelerating the adoption of digital banking, we expect to see even more banks invest heavily in technology to offer a seamless digital experience to their customers. From mobile banking apps to chatbots and AI-driven services, banks will be looking to enhance their digital capabilities to meet the changing needs of their customers. Open Banking Takes Center Stage: Open banking has been gaining traction in recent years, and we believe 2023 will be the year when it becomes a mainstream banking trend. Open banking allows customers to share their financial data securely with third-party providers, enabling them to access innovative financial products and services that were previously unavailable. As more banks embrace open banking, we expect to see an explosion of fintech startups and innovative banking solutions in the market. Blockchain Technology Disrupts Traditional Banking: Blockchain technology has the potential to revolutionize the banking industry, and we believe 2023 will be the year when we see more banks exploring its potential. Blockchain technology can enable secure, transparent, and faster transactions, eliminating the need for intermediaries and reducing costs. We expect to see banks adopting blockchain for everything from cross-border payments to trade finance and asset management. Artificial Intelligence (AI) and Machine Learning (ML) Revolutionize Banking: AI and ML are already being used in the banking industry to provide personalized customer experiences and detect fraud. In 2023, we expect to see even more banks adopting AI and ML to enhance their operations, from customer service to risk management and compliance. The use of AI and ML will enable banks to automate routine tasks, make better decisions, and improve efficiency. Customer-Centric Banking Takes Center Stage: With increasing competition from fintech startups and non-bank players, traditional banks will need to focus more on providing exceptional customer experiences to retain their customers. In 2023, we expect to see banks investing more in customer-centric initiatives, such as personalized product offerings, omnichannel experiences, and loyalty programs. Banks that can successfully differentiate themselves through customer experience will be the ones that thrive in the coming years. At Nearsoft, we are a team of experienced technologists and innovators who are passionate about leveraging emerging technologies to transform businesses. We believe that our expertise can help banks navigate these trends and embrace the disruption that is reshaping the industry. For instance, we can help banks enhance their digital capabilities by developing cutting-edge mobile banking apps and chatbots powered by AI and ML. We can also help banks leverage open banking by developing secure APIs that enable seamless data sharing with third-party providers. Additionally, our expertise in blockchain can help banks explore the potential of this technology for cross-border payments, trade finance, and asset management. Furthermore, we can help banks leverage the power of AI and ML to automate routine tasks, detect fraud, and make better decisions. Our customer-centric approach to software development can also help banks create personalized product offerings and omnichannel experiences that delight their customers. Overall, Nearsoft is well-positioned to help banks embrace the disruptive trends that are shaping the industry in 2023 and beyond. Our track record of delivering innovative solutions for clients across various industries makes us the ideal partner for banks that are looking to differentiate themselves and stay ahead of the curve.
André
André Teixeira
Marketing and Sales Consultant
A guide: How to build and publish an NPM Typescript package.
Software
Sep 23, 2022
A guide: How to build and publish an NPM Typescript package.
Introduction Have you ever found yourself copy-pasting the same bits of code between different projects? This was a constant problem for me, so I started developing Typescript packages that allowed me to reuse useful pieces of code. This guide will show you step-by-step how to build a package using typescript and published in the Node Package Manager (npm). Why use typescript?   Using Typescript will give you a better development experience, it will be your best friend when developing, always “yelling” at you every single time you make a mistake. In the beginning, you may feel that strong typing decreases productivity and It's not worth it to use. But believe me when I tell you that Typescript has some serious advantages: Optional Static Typing – Types can be added to variables, functions, properties, etc. This helps the compiler and shows warnings about any potential errors in code before the package ever runs. Types are great when using libraries they let developersknow exactly what type of data is expected. Intellisense – One of the biggest advantages of Typescript is its code completion andIntellisense. Providing active hints as code is added. More robust code and easier to maintain. In my option, Typescript should be your best pal when building packages!Let’s get cooking!                                          The first step is to create your package folder picking a creative name.mkdir npm-package-guide-project && cd npm-package-guide-projectCreate a git repository.Next, let’s create a remote git repository for your package. How to create a git repository is out of the scope of this article but when you create a repository in GitHub it easily shows you how to do it. Follow the steps there then come back over here!Start your packageAfter the repository is created, you need to create a package.json. It’s a JSON file that resides in the project's root directory. The package.json holds important information. It Contains human-readable metadata about the project, like the project name and description, functional metadata like package version number, scripts to run in the CLI, and a list of dependencies required by the project.npm init -yAfter that, we need to create a .gitignore file at the root of the project. We don’t want unneeded code entering the repository ✋. For now, we only need to ignore the node_modules folder.echo "node_modules" >> .gitignoreGreat Job! This is what the project should look like in Visual Studio Code and in the git repository. From this point on I will continue adding files from vscode.Let’s add in Typescript as a DevDependencyIt will use a more stable version of typescript that is compatible with multiple packages that will be used during this guide.npm install --save-dev typescript@4.7Using the flag –-save-dev will tell NPM to install Typescript as a devDependency. This means that Typescript is only installed when you run npm install, but not when the end-user installs the package. Typescript is needed to develop the package, but it’s not needed when using the package.To compile the typescript, we need to create a tsconfig.json file at the root of the project. This file corresponds to the configuration of the typescript compiler(tsc). {  "compilerOptions": {    "outDir": "./lib",    "target": "ES6",    "module": "CommonJS",    "declaration": true,    "noImplicitAny": true  },  "include": ["src"], // which files to compile  "exclude": ["node_modules", "**/__tests__/*"] // which files to skip} There are many configuration options in the fields of tsconfig.json and it's important to be aware of what they do. target: the language used for the compiled output. Compiling to es6 will make our package compatible with browsers. module: the module manager used in the compiled output. declaration: This should be true when building a package. Typescript will then also export types of definitions together with the compiled JavaScript code so the package can be used with both typescript and JavaScript.  outDir: Compiled output will be written to his folder. include: Source files path. In this case src folder. exclude: What we want to exclude from being compiled by the ts Let’s Code! Now with Typescript compilation set up, we are ready to code a simple function that receives parameters and multiplies them, returning the operation result. For this let’s create a src folder in the root and add an index.ts file:  export const Multiplier = (val: number, val2: number) => val * val2; Then add a build script to package.json: "build": "tsc" Now just run the build command in the console:npm run buildThis will compile your Typescript and create a new folder called lib in the root with your compiled code in JavaScript and type definition.It’s needed to add the lib folder to your .gitignore file. Is not recommended for auto-generated files to go to the git remote repository as it can cause unnecessary conflicts. node_modules/lib Formatting and linting A good package should include rules for linting and formatting. This process is important when multiple people are working/contributing to the same project so that everyone is on the same page when it comes to codebase syntax and style. Like we did with Typescript, these are tools used only for the development of the package. They should be added as devDependencies.Let’s start by adding ESLint to our package:npm install eslint @typescript-eslint/parser @typescript-eslint/eslint-plugin --save-dev eslint: ESLint core library @typescript-eslint/parser: a parser that allows ESLint to understand TypeScript code @typescript-eslint/eslint-plugin: plugin with a set of recommended TypeScript rules Similar to Typescript compiler settings, you can either use the command line to generate a configuration file or create it manually in VSCode. Either way, the ESLint configuration file is needed.Create a .eslintrc file in the root:You can use the following starter config and then explore the full list of rules for your ESLint settings. {  "parser": "@typescript-eslint/parser",  "parserOptions": {    "ecmaVersion": 12,    "sourceType": "module"  },  "plugins": ["@typescript-eslint"],  "extends": ["eslint:recommended", "plugin:@typescript-eslint/recommended"],  "rules": {},  "env": {    "browser": true,    "es2021": true  },} parser: this tells EsLint to run the code through a parse when analyzing the code. plugins: define the plugins you’re using extends: tells ESLint what configuration is set to extend from. The order matters. env: which environments your code will run in Now let’s add a lint script to the package.json. Adding an --ext flag will specify which extensions the lint will have in account. By default it’s .js but we will also use .ts. "lint": "eslint --ignore-path .eslintignore --ext .js,.ts ." There is no need for some files to be linted, such as the lib folder. It’s possible to prevent linting on unnecessary files and folders by creating a .eslintignore file. node_moduleslib Now ESLint it’s up and ready! I suggest the integration of ESLint into whatever code editor you prefer to use. In VSCode, go to extensions and install the ESLint extension.To check your code using ESLint you can manually run your script in the command line.npm run lintNow let’s set up PrettierIt’s common the usage of ESLint and Prettier and the same time, so let’s add Prettier to our project:npm install --save-dev prettierPrettier doesn’t need a config file, you can simply run and use it straight away.In case you want to set your own config, you need to create a .prettierrc at the root of your project.If you are curious to know more, I'm leaving here a full list of format options and the Prettier Playground. //.prettierrc{    "semi": false,     "singleQuote": true,     "arrowParens": "avoid" } Let’s add the Prettier command to our scripts. Let’s also support all files that end .ts, .js, and .json, and ignore the same files and directories as .gitignore ( or create a file .prettierignore) ...  "scripts": {    "test": "echo \"Error: no test specified\" && exit 1",    "build": "tsc",    "lint": "eslint --ignore-path .eslintignore --ext .js,.ts .",    "format": "prettier --ignore-path .gitignore --write \"**/*.+(js|ts|json)\""  },... Now just run the command npm run format to format and fix all your code.Conflicts with ESLint and Prettier.It’s possible that Prettier and ESLint generate issues when common rules overlap. The best solution here is to use eslint-config-prettier to disable all ESLint rules that are irrelevant to code formatting, as Prettier is already good at it.npm install --save-dev eslint-config-prettierTo make it work you need to go to the .eslintrc file and add it to Prettier at the end of your extends list to disable any other previous rules from other plugins. // .eslintrc{  "parser": "@typescript-eslint/parser",  "parserOptions": {    "ecmaVersion": 12,    "sourceType": "module",  },  "plugins": ["@typescript-eslint"],  // HERE  "extends": ["eslint:recommended", "plugin:@typescript-eslint/recommended", "prettier"],  "rules": {},  "env": {    "browser": true,    "es2021": true  } With that, the format and linting section are completed! Awesome job!Setup testing with jestIn my opinion, every package should include unit tests! Let’s add Jest to help us with that.Since we are using Typescript, we also need to add ts-jest and @types/jest.npm install --save-dev jest ts-jest @types/jestCreate a file jestconfig.json in the root: //jestconfig.json {"transform": {"^.+\\.(t|j)sx?$": "ts-jest"},"testRegex": "(/__tests__/.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$","moduleFileExtensions": ["ts", "tsx", "js", "jsx", "json", "node"]} Now let’s update the old test script in our package.json file: //package.json"scripts":{..."test": "jest --config jestconfig.json" ... Your package.json file should look something like this:Let’s write a basic test! In the src folder, add a new folder named __tests__, and inside, add a file with a name you like, but must end with test.ts, for example, multiplier.test.ts. //multiplier.test.tsimport { Multiplier } from '../index'test('Test Multiplier function', () => {  expect(Multiplier(2, 3)).toBe(6)}) In this simple test, we will pass the numbers 2 and 3 as parameters throw our Multiplier function and expect that the result will be 6.Now just run it.npm testIt works! Nice job! The test passes successfully, as you can see! Meaning that our function is multiplying correctly.Packages.json magic scripts.There are many magic scripts available for use by the Node Package manager ecosystem. It’s good to automate our package as much as possible.In this section we will look at some of these scripts in npm: prepare, prepublishOnly, preversion, version, and postversion. prepare script runs when git dependencies are being installed. This script runs after prepublish and before prepublishOnly. Perfect for running building code.           "prepare" : "npm run build" prepublishOnly: this command serves the same purpose as prepublish and prepare but runs only on npm publish!        "prepublishOnly" : "npm test && npm run lint" perversion: will run before bumping a new package version. Perfect to check the code using linters.        "preversion" : "npm run lint" version: run after a new version has been bumped. If your package has a git repository, like in our case, a commit and a new version tag will be made every time you bump a new version. This command will run BEFORE the commit is made.        "version" : "npm run format && git add -A src" postversion: will run after the commit has been made. A perfect place for pushing the commit as well as the tag.        "postversion" : "git push && git push --tags"This is what my package.json looks like after implementing the new scripts:Before PublishWhen we added .gitignore to our project with the objective of not passing build files to our git repository. This time the opposite occurs for the published package, we don’t want source code to be published with the package, only build files.This can be fixed by adding the files property in package.json:  //package.json..."files":[   "lib/**/*"  ] ... Now, only the lib folder will be included in the published package!Final details on package.jsonFinally is time to prepare our package.json before publishing the package: //package.json{ "name": "npm-package-guide", "version": "1.0.0", "description": "A simple multiplier function", "main": "lib/index.js", "types": "lib/index.d.ts", "scripts": { "test": "jest --config jestconfig.json", "build": "tsc", "lint": "eslint --ignore-path .eslintignore --ext .js,.ts .", "format": "prettier --ignore-path .gitignore --write \"**/*.+(js|ts|json)\"", "prepare": "npm run build", "prepublishOnly": "npm test && npm run lint", "preversion": "npm run lint", "version": "npm run format && git add -A src", "postversion": "git push && git push --tags" }, "repository": { "type": "git", "url": "git+https://github.com/Rutraz/npm-package-guide.git" }, "keywords": [ "npm", "jest", "typescript" ], "author": "João Santos", "license": "ISC", ... These final touches to the package.json include adding a nice description, keywords, and an author. It’s important here since it will tell NPM where it can import the modules from.Commit and push your code.The time is here, to push all your work to your remote repository!git add -A && git commit -m "First commit"git pushPublish your package to NPM!To be able to publish your package, you need to create an NPM account.If you don’t have an account you can do so at https://www.npmjs.com/signupRun npm login to login into your NPM account.Then all you need to do is to publish your package with the command:npm publishIf all went smoothly now you can view your package at https://www.npmjs.com/.We got a package! Awesome work!Increase to a new version.Let’s increase the version of our package using our scripts:npm version patchIt will create a new tag in git and push it to our remote repository. Now just published again:npm publishWith that, you have a new version of your package! Congratulations! You made it to the end. Hopefully, you now know how to start building your awesome package!
João
João Santos
Mobile Developer