51 lines
1.5 KiB
JavaScript
51 lines
1.5 KiB
JavaScript
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}`))
|