Skip to content

Latest commit

 

History

History
228 lines (129 loc) · 7.64 KB

CHANGELOG.md

File metadata and controls

228 lines (129 loc) · 7.64 KB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[Unreleased]

[4.2.0] - 2023-11-30

Added

  • Added clean script in root package.json. Thanks to Damien Buchet for the idea.

Changed

  • Changed --cached option of the git diff command in the pre-commit hook for the more explicit alias --staged.

Fixed

  • Fixed allow list in pre-commit hook : root package.json file can not be changed anymore (but root package-lock.json may be regenerated).

  • Fixed GitHub actions for deployment when repository is hosted on a GitHub organization account. Thanks to Jean-François Morin and Julien Richard.

  • Fixed job triggers for deployment. Thanks to Jean-François Morin and Julien Richard.

[4.1.2] - 2023-10-31

Changed

[4.1.1] - 2023-10-18

Fixed

  • Fixed GitHub actions for lint.

[4.1.0] - 2023-10-16

Fixed

  • Fixed issue #11: installed and configured lint-staged.

Added

  • Installed supertest in backend, and added smoke testing samples in a backend/tests/items/routes.spec.js file.

  • Added unit testing samples in a backend/tests/items/manager.spec.js file.

  • Added a section in backend/src/app.js for error handling. Reminder: an error-handling middleware must have 4 parameters

  • Added support for network-wide testing (ie: mobile testing) using --host option of Vite. Thanks to Loïc Brassart.

Changed

  • Isolated database client from backend/src/models/AbstractManager.js into a separate file backend/database/client.js, so it is accessible to test suite in a consistent way.

  • Breaking change: Refactored deployment using Traefik. Thanks to Jean-François Morin and Anthony Gorski.

[4.0.1] - 2023-08-09

Fixed

  • Fixed issue #84: provided lock files for pnpm and yarn, and fixed pre-commit hook to allow changes in root package.json. Thanks to Ayoub Idrissi Ouedrhiri.

  • Updated code tours in .tours folder.

[4.0.0] - 2023-07-28

Added

  • Installed @faker-js/faker in backend.

Changed

  • Installed react-router-dom in front, and did a non breaking change in main.jsx: pages can be added to the router, or everything can be developped in App setting aside the router features.

  • Uninstalled husky in front (useless dependency).

  • Moved to async/await syntax in backend/src/controllers/itemControllers.js, and passed error handling to next middleware.

  • Breaking change: Removed item update and delete routes, and the associated CRUD methods in ItemManager.

  • Breaking change: refactored models. Managers like backend/src/models/ItemManager.js should declare every CRUD methods: they do not inherit read and delete methods from AbstractManager anymore. Methods find, findAll and insert are renamed as read, readAll and create. Moved to async/await syntax.

  • Breaking change: manager registration should be done in backend/src/tables.js instead of backend/src/models/index.js.

For example, a FooManager.js model was previously registered in backend/src/models/index.js like this:

const models = {};

const FooManager = require("./FooManager");

models.foo = new FooManager();
models.foo.setDatabase(pool);

Now it should be registered in backend/src/tables.js like this:

const FooManager = require("./models/FooManager");

const managers = [
  // ...
  // Add other managers here
  FooManager,
];

Usage in controllers changes from this:

const models = require("../models");

// ...

models.foo.callSomeCrudMethod();

To this:

const tables = require("../tables");

// ...

tables.foo.callSomeCrudMethod();
  • Breaking change: split ̀database.sql logic into table creation in a file backend/database/schema.sql and table filling in a file backend/seed.js. Updated backend/migrate.js accordingly.

  • Breaking change: renamed migrate script as db:migrate, and added a db:seed script.

  • Breaking change: removed fallback values for .env variables. They have to be defined.

  • Breaking change: removed magic configuration, and added pedagogical comments to help rewrite it.

[3.0.2] - 2023-07-12

Fixed

[3.0.1] - 2023-07-10

Fixed

  • Removed useless eslint disable comment in backend/index.js. Thanks to Benoît Vandanjon.

  • Fixed pre-commit hook to reject modifications in the root directory.

[3.0.0] - 2023-05-29

Added

  • Git commands for Windows users, to fix issues with different newline formats (see README.md).

Changed

  • Changed default ports configuration to 3000 for frontend and 6000 for backend. Thanks to Loris Chastanet.

  • Breaking change: removed cutomized alias for imports in frontend.

Fixed

  • Moved vite and @vitejs/plugin-react as regular dependencies in frontend, and fixed imports in config. Thanks to Pierre Paillard.

Open an issue if you have any request/feedback :)

[2.0.1] - 2023-03-24

Changed

  • Removed useless code in package.json files.

[2.0.0] - 2023-02-10

Added

  • Deployment workflows using CapRover. Thanks to Anthony Gorski.
  • Compatibility with npm alternatives (yarn, pnpm...). Set config.cli in root package.json with the wanted value.

Changed

  • Allowed usage console.info in ESLint configuration (front and back).

  • Bumped dependencies versions. Thanks to Valentin Dupin.

  • Cleaned backend/src/app.js and removed public index.html file to avoid conflicts when serving react build.

  • Breaking change: removed setup script: npm install (or any other alternative) triggers a postinstall script.

  • Breaking change: removed models "autoloading": now managers should be instantiated manually in backend/src/models/index.js.

For example, given you created a FooManager.js file to be associated with a foo table, you should add to index, after const models = {} statement:

const FooManager = require("./FooManager");

models.foo = new FooManager();
models.foo.setDatabase(pool);
  • Breaking change: renamed connection property of managers as database to be consistent with quests.

Managers methods should be fixed from:

findAll() {
  return this.connection.query(`select * from  ${this.table}`);
}

To:

findAll() {
  return this.database.query(`select * from  ${this.table}`);
}