fix(number-fields): избегаем потери точности длинных чисел
- number-поля теперь рендерятся как text + inputMode=numeric, чтобы браузер не округлял значения через input type=number - пробелы при вставке в number-поля удаляются - бэкенд нормализует значения number-полей в строку перед сохранением - добавлен хелпер normalizeFieldValueForStorage Closes: искажение расчётного счёта и других длинных числовых полей
This commit is contained in:
89
README.md
Normal file
89
README.md
Normal file
@@ -0,0 +1,89 @@
|
||||
# iistwin
|
||||
|
||||
[](https://github.com/iisultanov/iistwin/actions/workflows/ci.yml)
|
||||

|
||||

|
||||

|
||||

|
||||
|
||||
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).
|
||||
Reference in New Issue
Block a user