fix(number-fields): избегаем потери точности длинных чисел

- number-поля теперь рендерятся как text + inputMode=numeric,
  чтобы браузер не округлял значения через input type=number
- пробелы при вставке в number-поля удаляются
- бэкенд нормализует значения number-полей в строку перед сохранением
- добавлен хелпер normalizeFieldValueForStorage

Closes: искажение расчётного счёта и других длинных числовых полей
This commit is contained in:
2026-07-07 21:03:40 +03:00
commit 1f5ecb6da4
1089 changed files with 237546 additions and 0 deletions

89
README.md Normal file
View File

@@ -0,0 +1,89 @@
# iistwin
[![CI](https://github.com/iisultanov/iistwin/actions/workflows/ci.yml/badge.svg)](https://github.com/iisultanov/iistwin/actions/workflows/ci.yml)
![Node.js](https://img.shields.io/badge/node-%3E%3D20-brightgreen?logo=node.js&logoColor=white)
![License](https://img.shields.io/badge/license-MIT-blue)
![PostgreSQL](https://img.shields.io/badge/postgres-%3E%3D15-336791?logo=postgresql&logoColor=white)
![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen)
A multitenant corporate iistwin platform with a React frontend and an Express backend. It provides organizations with independent management of users, projects, and tasks on shared infrastructure, featuring data isolation, real-time communication, and customizable workflow automation.
## Quickstart
```bash
cp .env.example .env # fill in DATABASE_URL, JWT_SECRET, SESSION_SECRET
npm install && npm run db:push && npm run dev
```
The app will be available at `http://localhost:5000`.
## Key Features
- Custom forms with configurable statuses, transitions, and conditional approvals
- Hierarchical subtasks with unlimited nesting
- Real-time chat with `@mentions` and Server-Sent Events
- Inline-editable data tables with Excel import/export
- JavaScript-powered custom tabs and layout components
- Event-driven notification system (in-app, email, push)
- Multi-tenant billing management
- Progressive Web App (PWA) support
## Getting Started
### Prerequisites
- Node.js 20+
- PostgreSQL 15+ (or use the built-in Docker Postgres profile — see below)
### Local development (without Docker)
1. Copy the environment template and fill in the required values:
```bash
cp .env.example .env
```
2. Install dependencies:
```bash
npm install
```
3. Push the database schema:
```bash
npm run db:push
```
4. Start the development server:
```bash
npm run dev
```
The app will be available at `http://localhost:5000`.
## Running with Docker
For Docker-based setup (including a built-in managed Postgres option), see **[DOCKER.md](./DOCKER.md)**.
It covers:
- **Mode 1** — connecting to an external database (e.g. Neon Cloud)
- **Mode 2** — letting Docker spin up a local Postgres 16 container alongside the app
## Environment Variables
See `.env.example` for all required environment variables. At minimum you will need:
| Variable | Description |
|---|---|
| `DATABASE_URL` | PostgreSQL connection string |
| `JWT_SECRET` | Secret used to sign access tokens |
| `SESSION_SECRET` | Secret used for session cookies |
| `VAPID_PUBLIC_KEY` | Web Push VAPID public key |
| `VAPID_PRIVATE_KEY` | Web Push VAPID private key |
## Super Admin
A system-level super admin panel is available at `/superadmin`. The first super admin account can be created via `POST /api/superadmin/seed` (optionally protected by the `SUPERADMIN_SEED_TOKEN` environment variable).