Relational data
userswith email, password hash, name, and rolecaseslinked to client and attorney userscase_updateslinked to case and authordocumentslinked to case and uploadermessageslinked to case, sender, and receiver
Spala does not replace React. It makes backend development explicit for the frontend: relational models, authentication, REST endpoints, validation, documented errors, CORS requirements, publish state, and TypeScript handoff.
A React UI is not a backend specification. Before launch, the team still needs to agree on users, records, relationships, protected routes, validation, errors, environment values, and who can maintain the result.
Spala is a fit when those decisions should be visible in one project and handed to the frontend as a REST contract. It is not a fit when the team wants direct SQL ownership, a large open-source ecosystem, or infrastructure maturity equivalent to Supabase, Firebase, or a custom cloud stack.
Spala's current public Legal Client Portal template is a concrete starting contract with 5 relational models and 11 endpoint definitions. The template is inspectable; it is not a claim that a project is production ready without project-specific tests.
users with email, password hash, name, and rolecases linked to client and attorney userscase_updates linked to case and authordocuments linked to case and uploadermessages linked to case, sender, and receiverSix representative definitions shown. Review all eleven in the template.
The exact generated SDK may vary by project. This minimal fetch shape shows the information the handoff must make explicit.
const API_URL = import.meta.env.VITE_SPALA_API_URL;
export async function listCases(token: string) {
const response = await fetch(`${API_URL}/api/cases`, {
headers: { Authorization: `Bearer ${token}` },
});
if (response.status === 401) throw new Error('Sign in required');
if (response.status === 403) throw new Error('Access denied');
if (!response.ok) throw await response.json();
return response.json();
}
Published API base URL and the correct frontend environment variable.
Signup/login routes, token behavior, roles, and protected-route rules.
Request and response fields, validation rules, and route-specific errors.
Approved CORS origins plus upload or realtime requirements when used.
Confirm password handling, login response, expiry, and the frontend's session behavior.
A client must not receive another client's cases, messages, documents, or invoices.
Exercise missing fields and malformed values, then verify the exact 400 response React will render.
Unauthenticated and authenticated-but-forbidden requests need different behavior.
Test the production React origin, preflight behavior, uploads, and any realtime channel used.
Inspect validation findings, secrets, project permissions, docs, and the final handoff artifacts.
project_connect.Send a repo, prototype, or deployed app URL. The review identifies the missing backend contract and the highest-risk handoff gaps. It is a scope review, not a security certification.
Yes. React calls a published Spala REST API. The handoff should specify the base URL, auth, request/response shapes, errors, CORS, and any upload or realtime behavior.
No. React remains the frontend. Spala models, validates, publishes, and documents the backend behind it.
No. Treat them as starting contracts. Test authentication, ownership, validation, secrets, integrations, failure paths, and operations for the actual project.
Choose based on the job. Supabase is stronger for direct Postgres control and ecosystem maturity. Evaluate Spala when guided assembly, visual inspection, validation, and frontend handoff are the bottleneck.