November 2025 - August 2026
Electronic Journal: Reworking Logic and 1C Integration
I took over a severely troubled application for teaching journals, assessment records and student performance and rewrote almost all of its logic. I retained the existing design and familiar sections. I reworked client-side behavior, server processing, data retrieval and saving, 1C integration and caching. I then continued addressing feedback, adding improvements and maintaining the system.
This case omits the organization name, participant names, student data and addresses of operational systems.

Names and academic data are demonstrations. The first three images are privacy edits of verification screenshots. Cache and report screens were captured from a local copy with a demonstration database and simulated 1C responses. Original interface: Russian.
What the application supports
- Teachers manage their accessible journals, lessons, grades and assessment records.
- Academic coordinators work with broader lists, filters and reports for academic periods.
- Students view their own current and final academic performance.
- Administrators manage the 1C connection, help content, maintenance mode and server cache.
Core academic data comes from 1C. SQLite stores local settings, comments and the server cache.
Before and after
| Workflow | Before the improvements | After the improvements |
|---|---|---|
| Opening lists | Slow 1C responses delayed data display | Lists load in the background with visible loading states; an available stale cache snapshot can be refreshed without waiting for the full response |
| Saving grades | Rapid edits caused competing requests; displayed values could diverge from saved data | Changes to the same journal run sequentially, cells show a saving indicator and display values synchronize with the result |
| Correcting a grade | The integration contract and display needed alignment | Original and corrected grades appear as “original/corrected”; removing a correction preserves the original grade |
| Copying a lesson | A request could be submitted repeatedly or an archived journal selected | The form is locked during copying, a target group is required and archived journals are excluded |
| Filters and periods | Duplicate entries, incompatible selections and incorrectly ordered semesters occurred | Duplicates are removed, dependent filters stay consistent, incompatible selections reset and sections keep separate filter state |
| Generating a report | Parameter changes triggered extra requests; the selected period was handled incorrectly | Data loads when generating the report, respects the date range and avoids duplicate identical requests |
| Assessment records | Grade editing, ticket numbers and deleted records needed fixes | Grades can be removed through 1C, the current ticket number pre-fills the form and deleted records are hidden and blocked |
| Data access | Role and individual journal access checks needed strengthening | The server uses signed sessions and checks access to journals and assessment records; admin and user sessions are separate |
| Maintenance | Cache settings and local database persistence needed improvement | Administrators can manage the cache; the working SQLite database is stored outside the container |
How I developed the project
1. Rewrote the logic while retaining the design
I separated client calls, API handlers and server functions. I centralized SQLite access and moved integration settings from a client-side file into server storage. I standardized error handling and fixed server-side loading, date serialization and React hydration issues.
I reworked retrieval of journals, assessment records and reference data. I removed duplicate journals and teachers, corrected lesson ordering by date and lesson number, fixed table sorting and improved filtering of active and archived records.
2. Made saving and editing clearer
I introduced sequential processing of grade changes within each journal. While saving, only the affected cell is locked; other cells remain editable. Teachers can enter several grades in succession and see which changes are still being saved.
I improved lesson creation, editing, deletion and copying. Copying shows progress and the outcome, and repeated clicks are blocked while a request is running. Target lists contain active journals for the same subject; selected groups reset after completion.
I added lesson comments with an indicator and viewing window, highlighted interim assessments and restored navigation back to the appropriate journal list. I fixed grades overlapping pinned columns during horizontal scrolling and input behavior in Chrome and Opera.
3. Reduced unnecessary waiting and repeated requests
I implemented a SQLite server cache with separate retention settings for different data. Identical concurrent requests share one operation. Lists can use an available stale snapshot while refreshing in the background. Related cache entries are invalidated after edits; a forced refresh waits for a new 1C response.
I moved journal lists and student performance loading into the background and added initial loading and refresh states. Coordinators load assessment records after selecting a period. Reports load on explicit generation, rather than starting a heavy request whenever filters change.
Result: fewer duplicate requests to 1C and clearer interface behavior during slow responses. Exact speed improvements depend on the data and external system; this case does not present comparative timing measurements.
4. Continued improving assessment records, reports and printing
I aligned grade changes and deletion with 1C contracts. I fixed ticket numbers, deleted assessment records, dates and absence reasons. I separated report filter state by section, restored complete option lists and corrected loading for the selected period.
I improved journal and assessment printouts, including forms generated by 1C and grades displayed in words.
5. Prepared specifications for 1C developers
The work covered both sides of the integration. I investigated whether an issue originated in the web application or required a change in 1C. I prepared specifications for 1C developers describing expected behavior, request parameters, response structures, errors and acceptance checks.
I coordinated fixes and improvements to 1C logic, including grade changes and deletion and flags for deleted assessment records. After the 1C changes, I adapted the web application and verified the agreed exchange workflow. The 1C developers implemented changes in 1C; my contribution included specifications, contract alignment and integration verification.
6. Strengthened access checks and maintenance workflows
I introduced signed user and administrator sessions. User role and identity come from the server session, and the server checks access to individual journals and assessment records. Changing an administrator password invalidates their previous sessions.
I added maintenance mode, editable help content and a 1C connection check. Administrators can enable or disable caching, configure retention, inspect statistics and clear the cache. I improved login errors and feedback after settings are saved.
I prepared Docker operation, excluded the working database from the image and provided separate persistent storage. I updated dependencies and switched the font to local hosting.
Result validation
Project materials document checks of rapid saving of several grades followed by a page reload, horizontal scrolling and a complete lesson-copying workflow into an active group. The test copy was removed after verification.
These are recorded checks from the development phase. They do not replace retesting the current operational environment and 1C integration after updates.
My role and technical foundation
I rewrote almost all of the troubled project’s logic while retaining its design. I investigated defects, reworked client behavior and server processing, prepared specifications for 1C developers, coordinated their changes and verified data exchange. I continued development and maintenance based on user feedback and new requirements.
Stack: Next.js, React, TypeScript, Node.js, SQLite, better-sqlite3, 1C REST API, Tailwind CSS, Docker.
Teachers gained clearer grade saving and lesson editing. Coordinators gained more consistent filters, periods and reports. Maintenance gained server-side access checks, a configurable cache and separate storage for the working database.