James Valencia
← Projects

2025 — present

DocuCobro — multi-company accounting management with SIIGO integration

Founder and sole author — CtisEvolution

Impact

The team stopped reconciling by hand between the collection system and SIIGO accounting — and the system keeps working even when the external authentication service has an outage.

ReactTypeScriptExpressPostgreSQLDrizzleJWTPlaywright

The problem

Companies that already keep their accounting in SIIGO needed invoicing, recurring collection, and client portals without duplicating data entry across two separate systems.

The approach

Commands to SIIGO are generated and executed through a dedicated service, with each command correlated by UUID against the Excel result file that SIIGO ends up generating — so the system knows which result corresponds to which operation even though the process is asynchronous.

Authentication is hybrid and resilient: it tries first against the company's external authentication service and, if that service doesn't respond, it falls back automatically to local authentication with bcrypt against its own database — graceful degradation instead of the whole system becoming unusable because of a downed dependency.

There's also a bundling lesson documented right in the code: using dynamic await import() for jsonwebtoken and bcrypt broke in production because esbuild bundled them incorrectly (the runtime error was of the "function is not a function" kind); the fix was going back to static imports.

The system has e2e tests with Playwright covering the full flow, including payment gateway variants.

It's a CtisEvolution product of its own, built almost solo — external help was limited to specific pieces, never the design or the full implementation.

Result

The team stopped reconciling by hand between the collection system and SIIGO accounting — and the system keeps working even when the external authentication service has an outage.