Translatify is the SWE project written in TypeScript, React using AWS technology, realized as part of the Software Engineering Project course at the University of Padua, in 2022-2023, supervised by Zero12 S.r.l.
Table of Contents
Hosted on Amazon Web Services this software offers a multiplatform backend where an organization can add and translate texts in different languages and an API library to allow to retrive the texts in the desired language and use them on their own Websites and Web Applications as pleased.
This repo contains the main software with the backoffice frontend part that run under the usage of our AWS APIs. It features all the lambdas functions available. The data is stored in dynamoDB. Cognito is used to secure all the functions that are used by the translating process for the organization, while the other funcions to retrive the texts are public. A Postman json is included with the list of all the different functions available.
For more examples, please refer to the Documentation, only available in italian at the moment To refer to our API repo, please follow the Link
Below is an example of how you can instruct your audience on installing and setting up your app. This template doesn't rely on any external dependencies or services.
Make sure you have the latest version of npm.
- npm
npm install npm@latest -g
- Clone the repository
- Add a .env file containing the authentication token to be used in the API calls: REACT_APP_API_KEY="" (contact us for obtaining the key to type into that variable)
- It's advised to wait for a while to have the API from AWS properly loading data inside pages after the first run
- Install dependencies with
npm install
- Run the app with
npm start
The application is a multi-tenant webapp that allows users to translate text from one language to another. The application is composed of a frontend and a backend. The frontend is a React application that communicates with the backend through a REST API. The backend is a serverless application that uses AWS Lambda functions to handle requests and DynamoDB to store data. There are three types of users:
- Guest: a user that is not logged in. A guest can only access the login and registration pages.
- User: a user that is logged in. A user can view the texts to translate and is associated with a single tenant.
- Admin: a user that is logged in. An admin can view the texts to translate and has a single tenant associated. He can also manage his Tenant setting, handling Tenant users and languages, approve or reject the translations and manage the text categories.
- SuperAdmin: a user that is logged in. A superadmin can have multiple tenants and for each one can manage users and languages associated.
- Login: a user can log in using his credentials.
- Registration: a user can register to the application.
- Texts: a user can view the texts to translate.
- Translation: a user can translate a text from one language to another.
- Tenant: an Admin can manage his Tenant settings.
- Tenant users: an Admin can manage his Tenant users.
- Tenant languages: an Admin can manage his Tenant languages.
- Tenant categories: an Admin can manage his Tenant categories.
- Tenant translations: an Admin can approve or reject the translations.
- SuperAdmin: a SuperAdmin can manage multiple tenants.
- SuperAdmin users: a SuperAdmin can manage users for each tenant.
- SuperAdmin languages: a SuperAdmin can manage languages for each tenant.
- React: a JavaScript library for building user interfaces.
- TypeScript: a programming language developed and maintained by Microsoft.
- AWS Lambda: a serverless computing service provided by Amazon Web Services.
- AWS DynamoDB: a fully managed proprietary NoSQL database service that supports key-value and document data structures.
- AWS API Gateway: a fully managed service that makes it easy for developers to create, publish, maintain, monitor, and secure APIs at any scale.
- AWS Cognito: a simple user identity and data synchronization service that helps you securely manage and synchronize app data for your users across their mobile devices.
- AWS Amplify: a set of tools and services that enables mobile and front-end web developers to build secure, scalable full stack applications, powered by AWS.
Run npm run test
to run the right command set as script to get MUI/Axios modules working properly.
Also, click "a" to run all tests.