I need to develop user register/login and CRUD APIs for a real estate web app, using the following AWS services.
Cognito
API Gateway
Lambda (
Node.js)
RDS (MySQL)
What you will need to do:
- Create
Node.js Lambda functions to insert, read, update, delete and list data from RDS MySQL database
- Create Rest api methods in the api gateway that will expose functionality and execute the respective lambda functions
- user registration and oauth login, integrated with cognito. On user registration, a row will be added in the users table in the database. This row will need to relate with the user profile on Cognito somehow. I'm not sure how this will work, and it will need to be discussed with you.
- Some API methods will need user authorization, using the user access token from Cognito. I will need advice from you on that matter. By authorization, I refer not only if an user has a valid token, but retrieve user data (openid connect?), if it has permission to execute a method, or read/update/delete a certain data row. I'm not sure if authorization must be verified in the gateway or lambda (or both).
- Real Estate properties will receive images to be stored in a S3 bucket.
Some notes:
- I will provide Postman collections for the APIs to be created
- Database is already set. You won't need to do anything in the database structure. I will do any changes needed.
- This is my first serveless project using AWS services, so any advice will be very welcome
- This is a long term project. Initial APIs will need maintenance and new ones will be developed in the next months.
Here is a briefing of the possible initial APIs (subject to change).
POST /usuario - Register an user
GET /usuario/[id] - Return an user data
PUT /usuario/[id] - Update an user data
DELETE /usuario/[id] - Delete an user
POST /usuario/lista/ - Return a list of users based on body params filters
POST /imovel - Register a real estate property and images
GET /imovel/[id] - Return a real estate property data and images
PUT /imovel/[id] - Update a real estate property data and images
DELETE /imovel/[id] - Delete a real estate property data and images
POST /imovel/lista/ - Return a list of real estate properties based on body params filters
POST /imovel/image - Add images to real estate property
GET /imovel/image/[id] - Return a real estate image data
PUT /imovel/[id] - Update a real estate image
DELETE /imovel/image/[id] - Delete a real estate property image
GET /imovel/image/lista/[id] - Return the list of image from a real estate property
POST /imobiliaria - Register a real estate agency
GET /imobiliaria/[id] - Return a real estate agency data
PUT /imobiliaria/[id] - Update a real estate agency data
DELETE /imobiliaria/[id] - Delete a real estate agency
POST /imobiliaria/lista/ - Return a list of real estate agencies based on body params filters
POST /corretor - Register a real estate agent
GET /corretor/[id] - Return a real estate agent data
PUT /corretor/[id] - Update a real estate agent data
DELETE /corretor/[id] - Delete a real estate agent
POST /corretor/lista/ - Return a list of real estate agents based on body params filters
On your proposal, estimate how much hours of development you think will be initially needed based on what was exposed in this job description, and when you can start.
Project duration More than 6 months