<!-- **Software engineering** - [x] Requirements - Functional requirements - Non-functional requirements - [x] Use-case diagrams & description tables - [x] Activity diagram - [x] Mock design - [ ] Database conceptual design **`?`** - **`All`** - [x] Development tools - [x] Solution selection - [x] Acronym ![](https://i.imgur.com/EodNQij.png) **Mock UI** - [x] API workspace starting page - [x] Improve text overflow Landing page - [x] Search result page - [ ] Consumers' page - [ ] Explore page **Improvemence** - [x] Variable types - [x] Sidebar routes - [x] Quick search in recently created and subscribed - [ ] Public/Private when create --> <!-- - [ ] Problem -> solution - [x] Solution design: API creators & API users -> usecase diagram - [ ] Detail about services (microservices) - [ ] Testing (unit test) - [ ] Security (OAuth 2.0) - [x] Result (Nodejs, Golang strength and Reliability; AWS services advantages) Some outputs we can construct in this first phase: - Backend side: - Make solution design for system architecture and authentication - Implemented CRUD app's APIs for users, projects and APIs - Advantages of tech stack selection: - **Golang**: developed by Google and has become increasingly popular thanks to its speed and performance. Comparing with Node.js in Backend development, Golang can handle subthreads concurrently, while Node.js is single-threaded. Golang also solve some issues existed in Node.js since it provides statically typed variables or clean and neat syntax - **AWS services**: we also use AWS services such as AWS Simple Storage Service (AWS S3) and AWS HAProxy Load Balancer which are crucial for developing an API web server with its flexibility, reliability and scalability - Frontend side: - Scaffold Frontend project base on NextJs, TypeScript, ESlint and Prettier - Implemented a web application user interface for create, subscribe and utilize API flow - Advantages of tech stack selection: - **NextJs** + **TypeScript**: developed Guillermo Rauch, the CEO of Vercel. NextJs supports Server-side rendering and it renders on both client and server side. This helps the Google's crawler looks for data even when the application hasn't been fully hydrated, hence improves SEO for SPAs. NextJs also provides tons of supports with built-ins for developers - **SWR**: tool for enhancing fetching data, provides feature of staling the response of a request to reuse along with revalidating when re-fetching that request - DevOps side: - Solution design for the whole project using cloud computing - Implemented the CI/CD with Gitlab - Built the whole infrastructure with Terraform - Advantages of tech stack selection: - **Terraform**: we use Terraform to manage the infrastructure since its community has written more than 1.000 providers to manage resources on AWS, Azure, Google Cloud Platform or Kubernetes, etc. --> Now let me give you more insights, requirements about our application, first let's talk about our end users. For our community to grow with the wealth of APIs collection, we have users that have developing skills as the API creators. On the other hand, there are domain-specialized users, they can be doctors, architectures that want to know weather info, etc. They can use the APIs to serve their purpose with the raw data they have. Now let's talk about how the process goes. There are 4 main functionalities in our application. On the API creator side, we provide an interface for them to input their algorithms in Python. As the creator click on submit button, the Backend server will receive, compile and generate the API. When the production API is ready, we let the creator provide some documentation, payload required and most importantly the pricing plans. And now the API is a possession of the creator, just like our repositories when we work on GitHub. Finally on consumer side, he/she will first have to subscribe to the API choosing one of the pricing plans provided by the creator, the they can utilize it using an interface on our application.