This is the repo for my website hosted at georgewaller.com on Vercel.
It is built on the following stack
- Nextjs (written in TypeScript)
- Prisma DB orm (postgres db hosted on heroku
- static files (images) stored in aws s3
- authtentication provided by next auth
- sentry for error detection
- uptime robot for site downtime detection
- testing using playwright
The roadmap for future development is managed in a GitHub project board: https://github.com/users/George9Waller/projects/1
- to run tests locally docker is used
2 actions are run on every PR against master:
- Lint using
npm run lint
- CI which builds the project and runs all playwright tests
For live server refresh: npm run dev
To build the project then run the server: npm run build
then npm run start:dev
- Build:
npm run docker:up
thennpm run build:test
(this step avoids building the project on every test run) - Run tests:
npm run test:local
- Docker down: docker will be closed automatically if all tests pass, alternativly use
npm run docker:down
To test run npm run lint
To fix run npm run prettier:write
name | Description |
---|---|
APP_ENV | set to TEST when testing to turn off sentry releases and enable test behaviour for authentication |
GW_AWS_ACCESS_KEY_ID | aws access key id |
GW_AWS_SECRET_ACCESS_KEY | aws access key secret |
GW_AWS_STORAGE_BUCKET_NAME | name of the storage bucket |
GW_AWS_UPLOAD_REGION | the region of the aws bucket e.g. eu-west-2 |
DATABASE_URL | url for postgres db |
SHADOW_DATABASE_URL | url for a shadow db used by prisma when generating migrations |
EMAIL_SEND_ACCOUNT | username for the email send account |
EMAIL_SEND_ACCOUNT_PASS | password for the email send account |
GOOGLE_CLIENT_ID | client id for google auth provider, see https://next-auth.js.org/providers/google for more details |
GOOGLE_CLIENT_SECRET | google client secret |
NEXTAUTH_URL | the url of the hosted site e.g. http://localhost:8080 |
NEXTAUTH_SECRET | a secret string used by nextauth for jwt |
NEXT_PUBLIC_SITE_URL | the url of the hosted site e.g. http://localhost:8080 |
SECRET_KEY | a secret string |
SENTRY_AUTH_TOKEN | token for sentry cli auth https://docs.sentry.io/api/auth/ |
SENTRY_DSN | the dsn for your sentry account |
SENTRY_IGNORE_API_RESOLUTION_ERROR | set to 1 - disables api resolving without returning a response, this is an existing bug with the project |
SENTRY_ORG | your org name on sentry |
SENTRY_PROJECT | the name of your sentry project |