Packages π¦ - Express, Aws-sdk, Serverless-http , Serverless-offline, Dotenv, Cors, Nodemon, Jest, Supertest.
Work separately on 2 different repositories then connect them and continue working
Front Repo - https://github.com/yakovcohen4/AWS-Dictionary-Front
Test The App - π Yakov's Dictionary
- The Front was served in S3 bucket as a static file.
Test The Server β - My server to get JSON answers
- The Back work with -
1. DynamoDB to store data.
2. Serve the app by REST API (Api Gateway) in conjunction with Lambda serverless function.
- Clone this repo
- Run
npm i
on theBack
andFront
dirs - To install all the dependencies
- Download the AWS CLI and configure your details.
- Create a table on dynamoDB and switch the
TABLE_NAME
onback/utils/constants
. - Choose your
REGION
inback/utils/constants
- Create
.env
file onback
dir and save -
1. ACCESS_KEY_ID = ?
2. SECRET_ACCESS_KEY = ? - Run
node index.js
onback
dir to start seeding your table (This may take some time).
- Download serverless
- Run
serverless deploy
onback
dir.
- Back -
runnpm run dev
onback
dir
OR
runserverless offline
on thecmd cli
(PORT=3000) - Front -
Check if the variableBASE_URL
onfront/src/app
ishttp://localhost:3000
Runnpm start
onfront
dir (PORT=3006)
-
1. Part Of Speech Validation.
2. Word Validation. -
1. Search word.
2. Search word with specific Part Of Speech.
3. Search Random word with specific Part Of Speech.
-
- Run
npm run dev
onback
dir. - Run
npm start
onfront
dir.
- Run
- Over 100,000 words!
- Search by word and get all its definitions in the different parts of speech.
- Search by word and part of speech desired.
- Receiving a random word and get all its definitions in the different parts of speech.
- Receiving a random word in a particular part of speech.
- By clicking each word in the result words, your search for the clicked word!
- Mobile first design!
- Awesome loader.
- More Unit test.
- A Footer.
For the result of a word search - all parts of speech
For a result of a word search - in a specific parts of speech
Receiving a random word in a specific parts of speech
"BASE_URL/"
- For home page
"BASE_URL/word/:word"
- For the result of a word search - All Parts Of Speech
"BASE_URL/part-of-speech/:part"
- Receiving a random word in a specific parts of speech
Your about to build an english dictionary app
-
Download English Dictionary in CSV format.
-
Set up a DynamoDB with
dictionary
table. -
DATABASE: Parse & Insert all words, in a common structure, to
dictionary
table. -
BACKEND: Build a REST API with the following end point(s):
GET /:word
- if word has more than one parts of speech will return all words part of speech, else, will return a word + definition + part of speech.GET /:word/:partOfSpeech
- will return a word + definition + part of speech (n, v, adj).GET /part-of-speech/:part
- for example,/part-of-speech/adjective
, will return a random word + definition + part of speech (part
is enum).GET /part-of-speech/:part?letter=X
- for example,/part-of-speech/noun?letter=m
, will return a random word with the same letter + definition + part of speech.
BONUS: should be deployed as 'lambda function'
-
FRONTEND: build a create-react-app English dictionary app (mobile first) URL routes:
/:word
- dynamic route - word is dynamic URL parameter, used to request backend api./:word/:partOfSpeech
- dynamic route - word is dynamic URL parameter, used to request backend api./:word/part-of-speech/:part
- part is enum URL parameter, used to request backend api.
each word in dictionary is clickable and will redirect to a common URL
BONUS: should be deployed to S3 bucket