The one principle
Every security decision in LineProTrack follows a single rule: the browser decides nothing that matters. Who you are, what you may see, which features you may use and whether your subscription is still active are all decided again by the server on every single request.
The practical consequence: a technically capable user can open developer tools, edit the JavaScript, modify the downloaded HTML, or replay requests with Postman or curl — and still cannot grant themselves permissions, extend a trial, or read another company's data. Every one of those paths goes through the server, and the server re-checks everything.
This is not the norm. A large share of business software puts permission logic in the front end, where changing one line of JavaScript defeats it. LineProTrack does not.
Authentication and access
- Two-token sessions. Signing in issues a short-lived access token (JWT, 15
minutes) sent with each request, and a refresh token stored in an
httpOnlysession cookie with no stored expiry: the session ends when you sign out, close the browser, after 2 hours without activity, or at most 12 hours after sign-in. Page JavaScript cannot read that cookie, so even a cross-site scripting flaw would not hand an attacker a usable session. - Passwords are never stored in readable form. They are hashed with
scryptusing a unique random salt per user. A system administrator with full access to the data files cannot read them. - Constant-time comparison. Password verification uses
crypto.timingSafeEqual, which prevents timing attacks — measuring response times to recover a secret character by character. - Four roles.
viewer(read only),operator(data entry),planner(scheduling),admin. Every API endpoint enforces a minimum role itself; it does not rely on the interface hiding a button. - Brute-force limits. Sign-in attempts are rate limited per network, and the API as a whole is rate limited.
- Subscription state is enforced server-side. When a trial or subscription ends, the server serves only what the rules allow — administrators can view and download the data for a limited time, and nothing else. There is no client-side flag that can switch the check off, and the user's system clock is irrelevant.
Customer data isolation
Where several companies share one installation, isolation is the control that matters most. Two design decisions carry it:
- The tenant identifier is always taken from the server-signed token — never from anything the browser sends in a URL, body or header. Trusting a client-supplied tenant id is the single most common cause of cross-customer data leaks in SaaS products; the code is written so that it cannot happen here.
- Computation caches live inside a single request and are never shared between customers, so one company can never be served a result computed for another.
- Data file names are validated against a strict pattern, blocking path-traversal
attempts, and uploaded content is screened for
__proto__/constructor/prototypekeys to prevent prototype pollution.
Browser-side hardening
- Strict Content Security Policy. The browser is instructed to execute only the
exact script blocks the server has signed with a SHA-256 hash, and to refuse every
inline event handler (
onclick=,onerror=) regardless of how it got onto the page. This is the last line of defence: even if malicious content were somehow injected, the browser would refuse to run it. - No inline handlers anywhere. All interactive elements go through a central dispatcher with a whitelist of permitted actions. Parameters travel as JSON data and are never interpreted as code.
- Standard hardening headers are enabled: HSTS,
X-Content-Type-Options, frame-ancestor restrictions and a strict referrer policy.
Protecting the scheduling engine
The forecasting and recovery-plan logic — the part built on two decades of factory scheduling experience — exists only on the server and is never sent to a browser. The browser submits raw data; the server computes; a filtering layer then returns only the conclusions (which line runs which day, whether the order lands on time, whether overtime is needed) and never the underlying parameters.
An automated check runs on every API response in non-production environments and blocks the response outright if internal fields ever leak into it — a loud failure is preferable to a silent one.
Supply chain and dependencies
- No third-party CDN. Every library, font and icon is served from our own infrastructure. A compromised public CDN cannot inject code into LineProTrack — and as a side effect, the product works normally behind corporate and national firewalls that block external CDNs.
- No advertising, analytics or tracking scripts run in the application.
- Dependencies are pinned and reviewed; known-vulnerable versions are replaced (for example, the spreadsheet library was upgraded to a release that fixes CVE-2023-30533).
Three levels of isolation
Every customer's data is kept apart from every other customer's. The levels below build on one another, and the plan you choose decides how far you go.
| Level | Where your data lives | What protects it |
|---|---|---|
| Level 1 — Plus | Shared infrastructure (Alibaba Cloud, Singapore) | Separation enforced in the application and again in the database; each organisation's data encrypted with its own key; encrypted backups; two-factor sign-in that the organisation can make mandatory for every member |
| Level 2 — Pro | Shared infrastructure (Alibaba Cloud, Singapore) | Everything in Level 1, plus restricting access to the network addresses you list, and exporting your organisation's activity log |
| Level 3 — Enterprise (Dedicated instance) | A server and database used by your organisation only | Everything in Level 2, and no other customer's data on the same server or database |
All traffic is served over HTTPS (TLS).
What this protects against — and what it does not
Data is decrypted only in the memory of the system, while it handles a request from your own users. That single fact decides the answers below.
| Risk | Protected? | How |
|---|---|---|
| Another customer reading your data | Yes | The organisation is taken from the signed sign-in token on every request, the database refuses rows that belong to another organisation, and your data is encrypted with a key that belongs to your organisation alone. |
| A stolen copy of the database or of a backup | Yes | Production data is stored encrypted. Backups are sealed with a public key; the key that opens them is never kept on the server, so the server cannot open a backup itself. |
| Someone taking full control of the running server | Only in part | While a request is being processed the data has to be readable in memory, so an attacker with full control of the live server could read what is being processed at that moment. Backups stay sealed. |
| A stolen password | Greatly reduced | Two-factor sign-in can be made mandatory for the whole organisation. On Pro and above, access can also be limited to your own network addresses. |
| Deleting your organisation | Yes | Once an organisation is deleted its data can no longer be read. Its key is destroyed, so its data becomes unreadable in every backup within 7 days; the backups themselves expire after 30 days. |
Your data
- You own your production data. We process it only to provide the service.
- Trial data. A trial is a normal organisation with its own encryption key. If the trial ends without a subscription, administrators can still view and download the data, and the organisation is deleted automatically 7 days after the trial ends — we email before that happens.
- Export at any time. Data goes in and comes out as Excel; you are never locked in by file format.
- Deletion. An administrator can request deletion of the organisation in the application, or by email from the registered address of an active administrator; it is carried out 24 hours after confirmation and can be cancelled until then. After a subscription ends, data is deleted automatically 30 days after the account is suspended. As soon as an organisation is deleted its data can no longer be read, and within 7 days it is unreadable in every backup.
- Details of personal data handling are in our Privacy Policy and Data Processing Agreement.
Current status and roadmap
We would rather tell you where we are than imply a maturity we have not reached. The architecture above is implemented and in use today. The following are not in place yet, and we will say so in a security review rather than let you discover it later:
| Item | Status |
|---|---|
| Independent third-party penetration test | Not yet performed. Planned before general availability |
| SOC 2 / ISO 27001 certification | Not held. Not currently in progress |
| Encryption at rest of customer content | In place. Production data and its history, saved AI-assistant content and defect photos are each encrypted with a separate key for every organisation (AES-256-GCM), on top of the encryption of the hosting disk layer. |
| Audit log of administrative and security actions | In place. Sign-ins, role changes, invitations and security settings are recorded and visible to your organisation's administrators; Pro and above can export the log as CSV. A field-by-field edit trail of production data is not provided — data history is kept as restore points instead. |
| Single sign-on (SAML / OIDC) | Not available yet. Sign-in is email and password, with two-factor authentication |
| Formal uptime SLA | Enterprise plan only, per the signed agreement |
| Automated backup and documented restore test | In place. Daily automated backup, kept for 30 days on the server and in an off-site store in a separate region with a lock that prevents early deletion, with an integrity check on every copy and a written restore procedure that has been executed and verified. Backups are sealed with a key that is never kept on the server; organisation keys travel in a separate bundle kept for no more than 7 days, so deleting an organisation makes its data unreadable in every backup. |
If your procurement process requires any of these, tell us early. We will answer honestly about what exists, what is planned, and what we will commit to contractually.
Reporting a vulnerability
If you believe you have found a security issue, please email lineprotrack@gmail.com with enough detail to reproduce it. We aim to acknowledge within 3 business days and will keep you informed until it is resolved. Please do not test against other customers' data or run denial-of-service tests against the hosted service.
We do not currently operate a paid bug bounty programme, and we will not take legal action against researchers who report issues in good faith and give us reasonable time to fix them.
Questions about this document? Write to lineprotrack@gmail.com.