import express from 'express' import { TinaNodeBackend, LocalBackendAuthProvider, createDatabase, createLocalDatabase } from '@tinacms/datalayer' import { AuthJsBackendAuthProvider, TinaAuthJSOptions } from 'tinacms-authjs' import { MongodbLevel } from 'mongodb-level' import { GitHubProvider } from 'tinacms-gitprovider-github' const isLocal = process.env.TINA_PUBLIC_IS_LOCAL === 'true' const branch = process.env.GITEA_BRANCH || 'main' const databaseClient = isLocal ? createLocalDatabase() : createDatabase({ gitProvider: new GitHubProvider({ branch, owner: process.env.GITEA_OWNER, repo: process.env.GITEA_REPO, token: process.env.GITEA_TOKEN, octokitOptions: { baseUrl: 'https://git.idealconnected.com/api/v1', }, }), databaseAdapter: new MongodbLevel({ collectionName: 'tinacms', dbName: 'tinacms', mongoUri: process.env.MONGODB_URI, }), }) const authProvider = isLocal ? LocalBackendAuthProvider() : AuthJsBackendAuthProvider({ authOptions: TinaAuthJSOptions({ databaseClient, secret: process.env.NEXTAUTH_SECRET, }), }) const tinaHandler = TinaNodeBackend({ authProvider, databaseClient, }) const app = express() app.use(express.json()) // Mount at root — TinaNodeBackend routes /api/tina/* internally app.all('*', (req, res) => tinaHandler(req, res)) const port = process.env.PORT || 3000 app.listen(port, () => console.log(`Tina backend running on port ${port}`))