Code Monkey home page Code Monkey logo

nextjs-todo-app's Introduction

TypeScript Next.js example

This is a really simple project that shows the usage of Next.js with TypeScript.

Deploy your own

Deploy the example using Vercel:

Deploy with Vercel

How to use it?

Execute create-next-app with npm or Yarn to bootstrap the example:

npx create-next-app --example with-typescript with-typescript-app
# or
yarn create next-app --example with-typescript with-typescript-app

Deploy it to the cloud with Vercel (Documentation).

Notes

This example shows how to integrate the TypeScript type system into Next.js. Since TypeScript is supported out of the box with Next.js, all we have to do is to install TypeScript.

npm install --save-dev typescript

To enable TypeScript's features, we install the type declarations for React and Node.

npm install --save-dev @types/react @types/react-dom @types/node

When we run next dev the next time, Next.js will start looking for any .ts or .tsx files in our project and builds it. It even automatically creates a tsconfig.json file for our project with the recommended settings.

Next.js has built-in TypeScript declarations, so we'll get autocompletion for Next.js' modules straight away.

A type-check script is also added to package.json, which runs TypeScript's tsc CLI in noEmit mode to run type-checking separately. You can then include this, for example, in your test scripts.

nextjs-todo-app's People

Contributors

dependabot[bot] avatar ronhouben avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

nextjs-todo-app's Issues

Add filter bar so Todo's can be filtered.

The filter bar should have the following options:

  • show # active todo's;
  • filter by all, active and completed todo's;
  • clear completed todo's which removes all completed todo's from the DB;

Generalise Toast styling

Currently the styling of the Toast messages are not generalised and is configured everywhere a Toast is used.
This should be generalised and abstracted into some reusable logic

Show a loading indicator when there's no user

When you open the app and are not logged you'll be automatically forwarded to the login page.
A moment before that happens you still see an empty Todo App.
This should not be happening.
Conditionally rendering the LoadingScreen component if there's no user yet will fix this.

Fix debounce when changing the title

Fix debounce when changing the title.
Currently it seems that the debounce is not working and a Todo gets updated with every keypress.
This also gives an overflow of update Toasts

Add toast errors in useTodos

Add toast errors in useTodos.
This shows the user a toast notification in case anything goes wrong when trying to mutate a todo (i.e. user is missing permissions)

Improve ordering of todos algorithm

Improve ordering of todos algorithm.
Currently I'm using a linked-list where there's a todo.order property that stores the order of each item in the todos container.
This has the consequence that all todo's have to be mutate when the order changes. This is very inefficient.

As an alternative I want to add an array of the todo id's for the specific user.
This array can be used for the ordering of the todos

items rearrange themselves incorrectly

if an item is dragged into a different position on the list, and then that same item is 'checked' (i.e. marked as done) that item would jump back from its new position to its old position

Bug - Social Login doesn't work on IOS Safari

This is an issue with NextJs-auth and would be fixed by adding state: false in /api/[...nextauth].ts under the providers:

// [...nextauth].ts
Providers.Google({
  clientId: process.env.NEXTAUTH_GOOGLE_ID,
  clientSecret: process.env.NEXTAUTH_GOOGLE_SECRET,
  state: false, // Disable the state feature
}),

nextauthjs/next-auth#656

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.