-
Notifications
You must be signed in to change notification settings - Fork 0
Yōkoso Overview
Yōkoso is a housing application for long-term rentals that allows landlords to post listings and students to search for housing, search for roommates, and post listings. Currently, this is done through Facebook, Craigslist, or Kijiji where it is difficult to search through postings and to know if a posting is legitimate. These sites are also general purpose and are not catered to housing, thus, they are often difficult to navigate.
Name | Role |
---|---|
Tommy Xu | Developer |
Tommy Deng | Developer |
Vivian Diec | Developer & PM |
Megan Hong | Developer |
Yōkoso
- Help students find housing
- Help landlords get make postings to get a wider reach
- Verify students and landlords
- Performant production grade service that scales
- Professional UI and UX
Auto-scaling and serverless application built on AWS cloud infrastructure.
Using the open source Serverless Framework, we aim to achieve the following architecture deployed to AWS.
As outlined in their Serverless Next.js At The Edge post:
Three Cache Behaviours are created in CloudFront.
The first 2.
_next/*
andstatic/*
forward the requests to S3.The 3rd. is associated to a lambda function which is responsible for handling three types of requests.
- Server side rendered page. Any page that defines
getInitialProps
method will be rendered at this level and the response is returned immediately to the user.- Statically optimised page. Requests to pages that were pre-compiled by next to HTML are forwarded to S3 where the HTML is stored.
- Public resources. These are requests to root level resources like
/robots.txt
,/favicon.ico
,/manifest.json
etc. These are also forwarded to S3 where these resources can be found.
- React/Next.js
- Chakra UI
- Node.js
- Express.js
- Next.js
- DynamoDB
- S3 Storage
- CloudFront
- Lambda@Edge functions
Mitigate scaling concerns using serverless AWS cloud infrastructure that supports horizontal auto-scaling.
Since we are using a pay-as-you-go or usage-based back-end and infrastructure services, the main concerns for cost are from an increase in users and malicious attackers. An increase in users is not troubling as it is natural and provides opportunity for greater revenue which would cover the additional cost. However, malicious attackers are always a concern. That risk can be mitigated through proper security, rate limiting, and DDOS prevention.
As a site with many user posts that each create a unique page, search engine optimization is very important. We are using Next.js to statically generate and server side render pages for best performance.
We will ensure a secure application through proper authentication and authorization when dealing with non-public data.
As previously mentioned, this risk can be mitigated through proper security (including authentication and authorization), rate limiting, and DDOS prevention.
We will use GitHub actions with AWS and Serverless Framework.
We are using a robust architecture that will scale and likely hold up over time without the need of a major overhaul.
Form of identification to ensure the user is a real person and information to hold them liable for listings that break guidelines/ policies
- Form initial requirements after gathering user needs (from both tenants and landlords)
- Form design system and style guide for application UI
- Create mock-ups and prototypes of pages with various user flows using Figma (mobile and desktop)
- Validate initial requirements with mock-ups and prototypes
- Refine requirements and mock-ups until fully validated and satisfies user needs
- Create reusable component library from mock-ups
- Set up structure and common layout for each page
- Implement the pages considering dynamic data, authentication, and authorization (DynamoDB, S3, and Cognito)
- Design NoSQL data model
- Setup and configure database with DynamoDB and Serverless Framework
- Deploy on AWS using Serverless Next.js At The Edge
Use GitHub Actions to run continuous integration and deployment pipeline.
- Landing page
- User creation
- Post listings
- Filter through listings
- Next.js
- TypeScript
- Node
- AWS
- CloudFront
- Lambda@Edge
- S3 Storage
- DynamoDB
- Github