Skip to content

musllim/React-Technical-Assignment

 
 

Repository files navigation

TODO App

Light theme Dark theme

πŸ—žοΈ About The Project

This is a task manager app that allows users to create, manage, and delete tasks. The app features a clean and responsive design, supports dark theme, and includes internationalization for English and French. It utilizes a dummy API for all CRUD operations, ensuring a smooth user experience.

πŸ€ Tech Stack

  • React βš›
  • TypeScript πŸ¦•
  • Zustand for state management
  • TanStack Query (React Query) for data fetching
  • React Router for routing
  • Tailwind CSS for styling
  • i18next for internationalization
  • Jest & React Testing Library for testing

πŸŽ† Live Demo

View the live demo here

πŸ’‘ Getting Started

To get a local copy up and running, follow these simple steps:

🚨 Prerequisites

  • Node.js or Bun (optional)
  • Package manager (npm, yarn, or bun)

πŸ”© Installation

  1. Clone the repository:

    git clone https://github.com/musilimu/React-Technical-Assignment.git
    cd React-Technical-Assignment
  2. Install the required packages:

    bun install

    Alternatively, you can use npm or yarn:

    npm install
    # or
    yarn install
  3. Start your local development server:

    bun dev

    Alternatively:

    npm run dev
    # or
    yarn dev

πŸ“‚ Project Structure

.
β”œβ”€β”€ bun.lockb
β”œβ”€β”€ eslint.config.js
β”œβ”€β”€ index.html
β”œβ”€β”€ jest.config.ts
β”œβ”€β”€ package.json
β”œβ”€β”€ postcss.config.js
β”œβ”€β”€ public
β”‚   └── locales
β”‚       β”œβ”€β”€ en
β”‚       β”‚   └── translation.json
β”‚       └── fr
β”‚           └── translation.json
β”œβ”€β”€ src
β”‚   β”œβ”€β”€ api
β”‚   β”‚   β”œβ”€β”€ todos.ts
β”‚   β”‚   └── users.ts
β”‚   β”œβ”€β”€ App.tsx
β”‚   β”œβ”€β”€ components
β”‚   β”‚   β”œβ”€β”€ NewTask.tsx
β”‚   β”‚   β”œβ”€β”€ OverView.tsx
β”‚   β”‚   β”œβ”€β”€ Paginations.tsx
β”‚   β”‚   β”œβ”€β”€ TeamChat.tsx
β”‚   β”‚   β”œβ”€β”€ TodoItem.tsx
β”‚   β”‚   β”œβ”€β”€ TodoList.tsx
β”‚   β”‚   β”œβ”€β”€ ui
β”‚   β”‚   β”‚   β”œβ”€β”€ Alert.tsx
β”‚   β”‚   β”‚   β”œβ”€β”€ Button.tsx
β”‚   β”‚   β”‚   β”œβ”€β”€ Nav.tsx
β”‚   β”‚   β”‚   β”œβ”€β”€ Sidebar.tsx
β”‚   β”‚   β”‚   └── Tabs.tsx
β”‚   β”‚   β”œβ”€β”€ UpdateTask.tsx
β”‚   β”‚   β”œβ”€β”€ Users.tsx
β”‚   β”‚   └── User.tsx
β”‚   β”œβ”€β”€ i18n.ts
β”‚   β”œβ”€β”€ index.css
β”‚   β”œβ”€β”€ main.tsx
β”‚   β”œβ”€β”€ __mocks__
β”‚   β”‚   β”œβ”€β”€ ky.ts
β”‚   β”‚   └── react-query.tsx
β”‚   β”œβ”€β”€ state
β”‚   β”‚   └── index.ts
β”‚   β”œβ”€β”€ __tests__
β”‚   β”‚   └── components
β”‚   β”‚       β”œβ”€β”€ Nav.spec.tsx
β”‚   β”‚       └── Sidebar.spec.tsx
β”‚   └── vite-env.d.ts
β”œβ”€β”€ tailwind.config.js
β”œβ”€β”€ tsconfig.app.json
β”œβ”€β”€ tsconfig.json
β”œβ”€β”€ tsconfig.node.json
└── vite.config.ts

πŸ§ͺ Tests

To run tests:

bun test

Alternatively:

npm test
# or
yarn test

πŸ§ͺ Unit & Component Tests

A sample test can be found in the ./src/__tests__ directory.

🌍 Internationalization

This app supports both English and French using i18next. The language can be toggled easily via a UI element.

πŸŒ‘ Dark Theme Support

The app includes a dark theme, which can be toggled to enhance the user experience based on preference.

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 96.4%
  • JavaScript 2.4%
  • Other 1.2%