# Modules

> The ready parts an app is made of, what each one does for your business, and which ones you add in one click from the portal.

A module is a ready part of an app: its data, its rules, its screens and its server work, shared by every app that uses it. A preset is a set of modules for one trade (see [Trades and presets](https://golocomotive.fr/docs/start/trades.md)), and your app can gain or lose a module later. Modules are kept and improved in one place, so a fix reaches every app that uses the module through the next toolkit update, after that app's own checks pass.

## The business modules

| module | what it does for your business | how you add it |
|---|---|---|
| Customers (CRM) | companies with their roles (customer, supplier, maker, insurer and more), contacts, deals in a pipeline with your own stages, activities with a follow up date, a timeline on each record | Modules tab |
| Quotes and invoices | quotes and invoices with lines, gap free invoice numbers, deposit invoices, credit notes, payments over several invoices, the PDF with VAT and French mentions, sent by mail | Modules tab |
| Assets | serialized goods (a vehicle, a boiler, a machine): condition, presence and use, owner history, costs, blockers that forbid an act, signed condition reports | Modules tab |
| Stock | items with offers from several suppliers, stock per site and per location (a technician's van), reservations, stock counts, the reorder list, shelf labels | Modules tab |
| Work orders | the job on an asset, its lines with who pays each one, parts reserved then taken from stock, the customer's approval by a link, clocked time, packages, billing per payer, the technician's screen | Modules tab |
| Purchasing | supplier orders sent by mail, receipts that move stock, returns, the reorder list as draft orders, the supplier invoice checked against what arrived | Modules tab |
| Planning | people, bays, vehicles or rooms booked over time, overlaps refused, absences asked and approved, the load per day, week or month | Modules tab |
| Claims | warranty and insurance claims against a maker or an insurer: lines claimed and granted, covers per asset, parts kept for the issuer, the acceptance rate | Modules tab |
| Follow ups | records that chase their owner: a reminder raised every few days until the record closes, and customer reminders from a date, sent once, only with consent | Modules tab |
| Files | the files of any record: a kind, a validity date, sensitive files behind a stricter rule, frozen files that never change, documents signed on screen | Modules tab |

## The common modules

| module | what it does for your business | how you add it |
|---|---|---|
| Rights | profiles such as Sales or Workshop, with a right per area and action and a few flags; every other module follows them | Modules tab |
| Sites | the sites, agencies or teams an account works in; each person sees the rows of their own sites | Modules tab |
| Users admin | invite, change, switch off, reset a password, lift the second sign in step, never above one's own profile | Modules tab |
| Numbering | business numbers by series (prefix, date part, reset per period), given by the server, gap free for invoices | Modules tab |
| Reference lists | the lists your team edits itself (payment modes, categories, services); a rename follows into every row, a delete is refused while a row uses the value | Modules tab |
| Proposals | writes held as proposals that a person confirms or rejects: from an AI, an import or a script | Modules tab |
| Mail in | incoming mail kept with its attachments and read by an AI into proposals a person confirms | Modules tab, then a request for each mailbox |
| Journal | every change and sign in, who and when, each field before and after. See [The journal](https://golocomotive.fr/docs/apps/journal.md) | Modules tab |
| Saved views | a list's search, sort and filters kept under a name, shared, or pinned in the menu | Modules tab |
| Bug reports | your users report a problem from inside the app, with a marked picture of the page | Modules tab |
| Documents | quotes, invoices and other business documents as A4 pages or receipt rolls, VAT per rate, French invoice mentions, print and download | a request |
| Dashboard | a home with figures and charts over a period you pick, compared with the period before, the whole page as a PDF | a request |
| Outgoing mail | your letterhead on every mail, documents sent as attachments, a journal line per mail | a request |

**Modules tab** means you add it yourself in one click from the portal. **A request** means you ask for it like any change, and an agent adds it to your app: these modules have no data of their own, only screens or server work that fit into your app's screens.

## Add a module in one click

1. Open your app in the portal, then the **Modules** tab.
2. The **Catalogue** lists every module, with what it does and what it asks. Click **Install** on the one you want.
3. Answer its few questions: which accounts it serves, who can see or change it (a rule, with a suggested start), which of your lists it covers.
4. **Preview** shows the exact change it makes to your app. **Install** applies that change.
5. The portal runs your app's checks, restarts the working copy for a few seconds, then saves the change in your app's history with a line for your users' "what's new" note. If a check fails, your app goes back exactly as it was before the click, with the reason.

The module reaches your live app with your next release and deploy, like any other change. See [Release and deploy](https://golocomotive.fr/docs/using/releases.md).

The same tab lists what your app has: **Installed** shows each module with its answers, and **Tables** shows every kind of record in your app, with the module that owns it.

## Remove a module

**Uninstall** shows the change and how many records the module holds, in the working copy and in each live deployment. When it holds any, you type the module's name to confirm that its data goes. A module that other modules need, or that your own screens use, is refused with the reason: a request removes it. Rights, sites and the users admin change your accounts, so they are removed by a request too.

## Your changes and the modules

A change you ask for inside a module (a field, a column, a rule) is made through the options the module offers, so the module's next version still reaches your app. When a need goes beyond those options, we add a new option to the module: the next client of your trade will want it too.

## Being built

- Picking a preset, and its modules, when you create an app.
- Your incoming emails read into draft records that you confirm: the module is there, the reading of a real mailbox for a client is being built.
- A question asked to your app, and an answer that shows its sources.

For developers: [Modules in code](https://golocomotive.fr/docs/developers/modules.md).
