I spent a day learning next.js by following their tutorial.
I used the next.js sample as a starting point and implemented the job search feature using server components and a client side search bar.
I wanted to experiment with server side actions, but found it was not responsive enough for the favourites feature, so I added an api to update the job favourites instead.
Then I copied the db folder from the starred sample project since sqlite seemed like a good choice for a project like this where ease of setup is important.
- Run
npm install -g pnpm
if you don't have pnpm installed - Run
pnpm db:reset
to reset the database - Run
pnpm install
to install dependencies - Run
pnpm dev
to start the project - Open http://localhost:3000 in your browser
There is no authentication, the login and logout buttons are just redirects. Given more time I would definitely add authentication. I can see the db is already prepared for hashed and salted passwords, but time did not allow it.
Another thing that leaves room for improvement is the presentation of the jobs themselves. A shorter description (perhaps AI generated summary) in the table and an on click details view might be a good fit. Alternatively a smalle page size and a document like view or perhaps cards might be more interesting than a table - we could add company logos as well.