|
|
4 년 전 | |
|---|---|---|
| components | 4 년 전 | |
| context | 4 년 전 | |
| hooks | 4 년 전 | |
| pages | 4 년 전 | |
| public | 4 년 전 | |
| styles | 4 년 전 | |
| utils | 4 년 전 | |
| .env.example | 4 년 전 | |
| .eslintrc.json | 4 년 전 | |
| .gitignore | 4 년 전 | |
| .prettierignore | 4 년 전 | |
| .prettierrc.json | 4 년 전 | |
| README.md | 4 년 전 | |
| app.d.ts | 4 년 전 | |
| next-env.d.ts | 4 년 전 | |
| next.config.js | 4 년 전 | |
| package.json | 4 년 전 | |
| postcss.config.js | 4 년 전 | |
| tailwind.config.js | 4 년 전 | |
| tsconfig.json | 4 년 전 | |
| yarn.lock | 4 년 전 |
This is my take on Prisma's Home Challenge.
This is a Next.js project made in Typescript and bootstrapped with create-next-app.
For an application like this, my candidates were
So based on this, my two top candidates were Gatsby & Next.js, I decided to go with Next.js because of personal preference :)
as a side note the api doesn have cors configured correctly, so i couldnt query directly from fe, and for the challenge i set up a proxy to bypass this
Aside from my reasons of choosing Next.js, I ended up creating a proxy for the API, since every request from a client application to https://prisma-fe-dev-assignent.vercel.app/api/ was blocked by CORS policy (this was a workaround to get the API working).
I added the option to choose between the original API or the proxy: adding the env variable NEXT_PUBLIC_API=https://prisma-fe-dev-assignent.vercel.app/api would make the client application to use the original backend instead of using proxy.
I also used TailwindCSS to speed up the development process.
First, create a .env.local file with the contents of .env.example
Then run the development server:
yarn dev
Open http://localhost:3000 with your browser to see the result.
There are a couple of things that I would do differently if I could change the API:
/login endpoint returns user data instead of just a message
c. Double check message content (there was a tiny typo in the failed response for /login)
d. I would change the result of /user/{id} to return a user with an id: int instead of id: string to keep consistency with the other endpoints.I would improve the UX of the application: