F
Fand_igor

Refactoring and Stabilization of an Electronic Journal on Next.js with 1C Integration

Brief Description

I stepped into a troubled electronic journal project after the departure of previous developers and quickly completely reworked a critical portion of the logic, structure, and server layer. The primary task was not cosmetic interface refinement, but rather bringing the system into a working state rapidly: closing security issues, reducing response times, stabilizing 1C integration, and eliminating freezes during user operation.

The project developed as a continuation of an existing version:

  • Previous version - the project in its original state as I received it after the departure of the previous developers.
  • New version - the reworked version in which I redesigned key parts of the logic, server-side processing, and 1C integration.

Task Context

The project was already in use but was in a problematic state. Some of the old code was preserved because I had a strict time and budget limit, and a full overhaul of the entire codebase within this task was not feasible.

At the same time, I needed to quickly solve real applied problems:

  • unstable logic in the API and 1C integration;
  • weak server layer structure;
  • long and heavy requests;
  • interface freezes during data loading;
  • low predictability of system behavior upon errors;
  • security risks and careless request handling.

What has been done

  • Took over someone else's project and reworked it without a complete rewrite from scratch.
  • Moved critical business logic from scattered API routes into a clearer and more manageable server layer.
  • Separated client calls, API handlers, and server functions to reduce duplication and simplify maintenance.
  • Brought error handling to a more predictable form both on the client and server.
  • Strengthened the security of request processing, parameter validation, and authorization scenarios.
  • Reworked authorization and login form behavior, including validation, error handling, loading states, and protection against repeated user actions.
  • Eliminated several fragile spots in the project structure and prepared a clearer architectural foundation for future development.

What was done for performance

  • Analyzed heavy requests to 1C and abandoned the scenario where the user interface waited for a single long monolithic response.
  • Divided data retrieval into shorter and more manageable requests.
  • For heavy scenarios, moved part of the loading to background or deferred processing.
  • For more frequent user actions, kept requests short and fast to avoid blocking the interface.
  • Added 1C data caching through SQLite with TTL to reduce load on the external source and speed up repeated requests.
  • Configured a separate server layer for working with the cache, storage durations, clearing, and invalidating cached responses.
  • Stabilized system operation in scenarios where requests previously could wait up to 10 minutes or freeze completely.

Architectural Improvements

  • Added separate server modules for working with the database, cache, and server actions.
  • Centralized the SQLite connection and made working with local configuration and cache more manageable.
  • Moved 1C integration into a separate layer so that API routes act as thin handlers rather than containing the entire business logic.
  • Prepared the infrastructure base for further project development: Docker, DB initialization, separate service modules for the server side.
  • Maintained compatibility with the existing project and interface to meet time constraints and avoid breaking working user scenarios.

Technical Highlights

  • Ability to quickly enter third-party code and stabilize a system without a complete rewrite.
  • Experience with rescue/refactor tasks where not only development but also technical resuscitation of a project is important.
  • Experience optimizing integration with a slow external data source.
  • Ability to design a server layer, caching, and a strategy for working with heavy requests.
  • Ability to work under strict time constraints and make engineering compromises without losing the result.

Technologies

  • Next.js
  • React
  • TypeScript
  • Node.js
  • SQLite
  • better-sqlite3
  • 1C API integration
  • Tailwind CSS
  • Docker

My role

My role was comprehensive within the refinement phase: I took over a troubled project from previous developers, performed a technical analysis of bottlenecks, reworked critical logic, strengthened security, optimized 1C integration, implemented caching, reduced waiting time for heavy requests, and brought the system to a working state within a limited timeframe of approximately 40 hours.

Practical value of the project

This case demonstrates not just the development of new functionality, but engineering work in a complex applied situation:

  • restoration and stabilization of a third-party project;
  • deep logic reworking under tight deadlines;
  • optimization of slow integration with an external system;
  • increasing the security and stability of the server side;
  • implementation of caching and a new strategy for working with heavy requests;
  • the ability to quickly bring a troubled product to a working state.