i18n complete: all 16 components translated (CZ/HE/RU/UA)
- Custom i18n provider with React Context + localStorage - Hebrew RTL support (dir=rtl on html) - All pages + components use t() calls - FullCalendar + dates locale-aware - Language selector in Settings wired to context Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -3,6 +3,7 @@ require("dotenv").config();
|
||||
const Fastify = require("fastify");
|
||||
const cors = require("@fastify/cors");
|
||||
const jwt = require("@fastify/jwt");
|
||||
const rateLimit = require("@fastify/rate-limit");
|
||||
const { Pool } = require("pg");
|
||||
const Redis = require("ioredis");
|
||||
|
||||
@@ -25,6 +26,12 @@ redis.on("error", (err) => {
|
||||
|
||||
// Plugins
|
||||
app.register(cors, { origin: true });
|
||||
app.register(rateLimit, {
|
||||
max: 100,
|
||||
timeWindow: "1 minute",
|
||||
keyGenerator: (req) => req.ip,
|
||||
errorResponseBuilder: () => ({ error: "Too many requests", statusCode: 429 })
|
||||
});
|
||||
app.register(jwt, { secret: process.env.JWT_SECRET || "taskteam-jwt-secret-2026" });
|
||||
|
||||
// Decorate with db and redis
|
||||
@@ -50,6 +57,7 @@ app.register(require("./routes/connectors/pohoda"), { prefix: "/api/v1" });
|
||||
app.register(require("./routes/chat"), { prefix: "/api/v1" });
|
||||
app.register(require("./routes/notifications"), { prefix: "/api/v1" });
|
||||
app.register(require("./routes/goals"), { prefix: "/api/v1" });
|
||||
app.register(require("./routes/system"), { prefix: "/api/v1" });
|
||||
|
||||
// Graceful shutdown
|
||||
const shutdown = async (signal) => {
|
||||
|
||||
Reference in New Issue
Block a user