Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
APPLICATIONINSIGHTS_CONNECTION_STRING=your-application-insights-connection-string
EMAIL_ADDRESS_ALLOWED_DOMAIN=example.com
EMAIL_ADDRESS_ALLOWED_DOMAIN_REVEAL=false
GEMINI_API_KEY=your-gemini-api-key
GEMINI_MODEL_ID=gemini-3.5-flash
LOG_USER_ID_IN_AZURE_APP_INSIGHTS=false
LLM_PROVIDER=openai
MONGODB_URI=mongodb://admin:password123@127.0.0.1:27017/gpbp?directConnection=true&authSource=admin
MONGO_INITDB_ROOT_USERNAME=admin
MONGO_INITDB_ROOT_PASSWORD=password123
Expand Down
41 changes: 41 additions & 0 deletions data/zip-download/nunjucks-setup.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
import path from 'node:path';
import * as nunjucks from 'nunjucks';
import { Express } from 'express';

import {
arrayOrStringIncludes,
convertToGovukMarkdown,
formatList,
govukDate,
isArray,
isoDateFromDateInput,
} from '../../src/filters';

export function setupNunjucksEnvZipDownload(
app: Express,
dirname: string
): nunjucks.Environment {
const nunjucksEnv = nunjucks.configure(
[
path.join(dirname, 'views'),
path.join(dirname, 'node_modules/hmrc-frontend/'),
path.join(dirname, 'node_modules/govuk-frontend/dist/'),
],
{
autoescape: true,
express: app,
noCache: true,
}
);

nunjucksEnv.addFilter('govukDate', govukDate);
nunjucksEnv.addFilter('isoDateFromDateInput', isoDateFromDateInput);
nunjucksEnv.addFilter('govukMarkdown', convertToGovukMarkdown);
nunjucksEnv.addFilter('formatList', formatList);
nunjucksEnv.addFilter('includes', arrayOrStringIncludes);
nunjucksEnv.addFilter('isArray', isArray);

app.set('view engine', 'njk');

return nunjucksEnv;
}
36 changes: 3 additions & 33 deletions data/zip-download/server.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,8 @@ import express, { Request, Response } from 'express';
import { rateLimit } from 'express-rate-limit';
import session from 'express-session';
import path from 'node:path';
import * as nunjucks from 'nunjucks';

import {
arrayOrStringIncludes,
convertToGovukMarkdown,
formatList,
govukDate,
isArray,
isoDateFromDateInput,
} from './filters';

import { setupNunjucksEnvZipDownload } from './nunjucks-setup';
import prototypeJson from './your-prototype.json';

// Create the Express application
Expand All @@ -24,29 +16,7 @@ app.disable('x-powered-by');
app.use(express.urlencoded());

// Configure Nunjucks with the correct paths
export const nunjucksEnv = nunjucks.configure(
[
path.join(__dirname, 'views'),
path.join(__dirname, 'node_modules/hmrc-frontend/'),
path.join(__dirname, 'node_modules/govuk-frontend/dist/'),
],
{
autoescape: true,
express: app,
noCache: true,
}
);

// Add the filters
nunjucksEnv.addFilter('govukDate', govukDate);
nunjucksEnv.addFilter('isoDateFromDateInput', isoDateFromDateInput);
nunjucksEnv.addFilter('govukMarkdown', convertToGovukMarkdown);
nunjucksEnv.addFilter('formatList', formatList);
nunjucksEnv.addFilter('includes', arrayOrStringIncludes);
nunjucksEnv.addFilter('isArray', isArray);

// Set the view engine to Nunjucks
app.set('view engine', 'njk');
export const nunjucksEnv = setupNunjucksEnvZipDownload(app, __dirname);

// Serve static files
app.use('/assets', express.static(path.join(__dirname, 'assets')));
Expand Down
10 changes: 10 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@
},
"dependencies": {
"@azure/monitor-opentelemetry-exporter": "~1.0.0-beta.32",
"@google/generative-ai": "^0.24.1",
"@opentelemetry/api": "~1.9.1",
"@opentelemetry/auto-instrumentations-node": "~0.76.0",
"@opentelemetry/instrumentation-express": "~0.66.0",
Expand Down
38 changes: 5 additions & 33 deletions server.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,18 +6,8 @@ import { ipKeyGenerator, rateLimit } from 'express-rate-limit';
import session from 'express-session';
import helmet from 'helmet';
import moment from 'moment';
import path from 'node:path';
import * as nunjucks from 'nunjucks';

import { connectToDatabase, disconnectFromDatabase } from './src/database';
import {
arrayOrStringIncludes,
convertToGovukMarkdown,
formatList,
govukDate,
isArray,
isoDateFromDateInput,
} from './src/filters';
import { adminRouter } from './src/routes/admin-routes';
import { helpRouter } from './src/routes/help-routes';
import {
Expand All @@ -30,6 +20,7 @@ import { prototypeRouter } from './src/routes/prototype-routes';
import { setupStaticAssets } from './src/routes/static-assets';
import { userRouter } from './src/routes/user-routes';
import { getEnvironmentVariables } from './src/utils';
import { setupNunjucksEnv } from './src/utils/nunjucks-setup';

// Load environment variables once
const envVars = getEnvironmentVariables();
Expand Down Expand Up @@ -78,31 +69,12 @@ app.use(bodyParser.json());
app.use(compression());

// Configure Nunjucks with the correct paths
export const nunjucksEnv = nunjucks.configure(
[
path.join(__dirname, 'data/prompts/'),
path.join(__dirname, 'node_modules/hmrc-frontend/'),
path.join(__dirname, 'node_modules/govuk-frontend/dist/'),
path.join(__dirname, 'views/'),
],
{
autoescape: true,
express: app,
noCache: nodeEnv !== 'production',
}
export const nunjucksEnv = setupNunjucksEnv(
app,
nodeEnv !== 'production',
__dirname
);

// Add the filters
nunjucksEnv.addFilter('govukDate', govukDate);
nunjucksEnv.addFilter('isoDateFromDateInput', isoDateFromDateInput);
nunjucksEnv.addFilter('govukMarkdown', convertToGovukMarkdown);
nunjucksEnv.addFilter('formatList', formatList);
nunjucksEnv.addFilter('includes', arrayOrStringIncludes);
nunjucksEnv.addFilter('isArray', isArray);

// Set the view engine to Nunjucks
app.set('view engine', 'njk');

// Serve static files
setupStaticAssets(app, __dirname);

Expand Down
Loading
Loading