PranavB6 / timeey-server

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

๐ŸŒŸ Project Purpose and Objectives

The main goal of this project is to create a simple and easy to use time tracking application using Google Sheets to store all the data. This is aimed to managers who want to track their employees' time.

This is the backend of the application. It is a REST API that is used to communicate with the Google Sheets API. You can find the frontend here. This project is built on NodeJS using the ExpressJS framework.

๐Ÿ“ˆ Future Plans

  • Deploy to GCP Cloud Run

๐ŸŒ… Getting Started

  1. (Prerequisites)
    • Install NodeJS and npm (included with NodeJS)
    • Copy the .env.example file and rename it to .env. Fill in the values for the environment variables.
  2. Clone the repository
  3. Run pnpm install to install all dependencies
  4. Run pnpm build to build the project
  5. Run pnpm start to start the server
  6. Open http://localhost:8000 in your browser to view the application

โœ’๏ธ Development

  1. Run npm run dev to start the server in development mode (this will build the project and start the server in watch mode)
  2. Run npm run test to run the tests
  3. Run npm run test:dev to run the tests in watch mode

๐Ÿงน Linting / Formatting

  1. Run npm run lint to lint the project using ESLint (without fixing the errors)
  2. Run npm run lint:fix to lint the project and fix linting errors
  3. Run npm run format:check to check the formatting using Prettier (without fixing the errors)
  4. Run npm run format to format the project using Prettier (and fix the errors)

NOTE: The project is automatically linted and formatted on commit using Husky and Lint-Staged.

๐Ÿ‘€ Technologies Used

  • ExpressJS
    • A NodeJS framework used to build the REST API
  • TypeScript
    • A superset of JavaScript that adds static typing to the language
  • Google Apis
    • A library that allows you to easily interact with Google APIs
  • Zod
    • A TypeScript-first schema declaration and validation library used to validate client requests
  • Winston
    • A logger library used to log errors and other information

๐Ÿงช Testing

  • Mocha
    • A testing framework used to write tests
  • Chai
    • An assertion library used to write tests
  • Sinon
    • A library used to mock functions and objects

๐Ÿงน Linting / Formatting Technologies

  • ESLint
    • A linter used to lint the project
  • Prettier
    • A code formatter used to format the project

About


Languages

Language:TypeScript 99.4%Language:Dockerfile 0.4%Language:Shell 0.2%