Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
43824e1
feat: implement basic nestjs backend api
stijnvdkolk Jun 9, 2026
43c9858
chore: merge backend-nest .gitignore into main .gitignore
stijnvdkolk Jun 9, 2026
6f38c91
chore: remove .prettierrc configuration file
stijnvdkolk Jun 9, 2026
6f83822
fix: correct prettier formatting
stijnvdkolk Jun 9, 2026
f7f70fd
feat(backend/nest): implement configs and basic utils (#746)
stijnvdkolk Jun 10, 2026
376e593
feat(backend/nest): add Swagger integration
stijnvdkolk Jun 10, 2026
1563ba9
feat(backend/nest): integrate nestjs-zod for enhanced validation and …
stijnvdkolk Jun 11, 2026
bce8e11
feat(backend/nest): add database setup with Prisma and Kysely
stijnvdkolk Jun 10, 2026
cf45adf
docs(database): improve formatting and readability of MIGRATIONS_READ…
stijnvdkolk Jun 11, 2026
f8c97ab
feat(backend/nest): wire postgres sessions, passport, and api versioning
stijnvdkolk Jun 11, 2026
8691dab
feat(backend/nest): port fetchWithRetries util
stijnvdkolk Jun 11, 2026
842f74c
feat(backend/nest): port discord profile service
stijnvdkolk Jun 11, 2026
e596c51
feat(backend/nest): port discord token refresh service
stijnvdkolk Jun 11, 2026
8527003
feat(backend/nest): port discord guild service with session flag caching
stijnvdkolk Jun 11, 2026
72f3649
feat(backend/nest): add discord oauth strategy and login/logout flow
stijnvdkolk Jun 11, 2026
2925552
feat(backend/nest): add authorization guards
stijnvdkolk Jun 11, 2026
7bb249e
feat(backend/nest): add guild permission endpoints
stijnvdkolk Jun 11, 2026
4381c25
test(backend/nest): add mock-Discord fixture and auth e2e suite
stijnvdkolk Jun 11, 2026
7ac1eff
style(backend/nest): linting and formatting
stijnvdkolk Jun 11, 2026
620963d
feat(swagger): add enhanced Swagger setup
stijnvdkolk Jun 11, 2026
0957e7f
fix(backend/nest): security fix and upgrade to ts 6 + es2025
stijnvdkolk Jun 11, 2026
867ff0d
fix(backend/nest): pin vitest swc target to es2024 so suites run unde…
stijnvdkolk Jun 12, 2026
8494ceb
feat(backend/nest): add socket.io realtime gateway and broadcast service
stijnvdkolk Jun 11, 2026
060bdbf
test(backend/nest): add realtime resync and socket e2e suites
stijnvdkolk Jun 11, 2026
8277f34
test(backend/nest): use creatingTestModule for remaining test
stijnvdkolk Jun 11, 2026
b76f389
chore(backend/nest): add sharp for canvas rendering
stijnvdkolk Jun 12, 2026
e20b768
feat(backend/nest): add canvas render cache and export services
stijnvdkolk Jun 12, 2026
f8a1cf9
feat(backend/nest): add canvas service with bulk paste and pixel reco…
stijnvdkolk Jun 12, 2026
9a57154
feat(backend/nest): add canvas controller with png route parity
stijnvdkolk Jun 12, 2026
48e2a69
fix(backend/nest): code comments
stijnvdkolk Jun 12, 2026
43d7635
feat(backend/nest): implement pixel placement functionality with bloc…
stijnvdkolk Jun 14, 2026
8ef7eb3
feat(backend/nest): implement blocklist and history management functi…
stijnvdkolk Jun 14, 2026
215f9e2
feat(backend/nest): implement audit log support and update first methods
stijnvdkolk Jun 15, 2026
6e9d03f
feat(backend/nest): implement event module
stijnvdkolk Jun 15, 2026
e819a78
feat(backend/nest): implement palette module
stijnvdkolk Jun 15, 2026
536a820
feat(backend/nest): implement notice module
stijnvdkolk Jun 15, 2026
23731af
feat(backend/nest): implement frame module
stijnvdkolk Jun 15, 2026
3017df2
feat(backend/nest): implement stats module
stijnvdkolk Jun 15, 2026
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
2 changes: 2 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,7 @@ jobs:
package:
- types
- backend
- backend-nest
- frontend
steps:
- uses: actions/checkout@v6
Expand All @@ -87,6 +88,7 @@ jobs:

- name: Restore Next.js cache
uses: actions/cache@v5
if: ${{ matrix.package == 'frontend' }}
with:
path: ${{ github.workspace }}/packages/frontend/.next/cache
# Generate a new cache whenever packages or source files change
Expand Down
143 changes: 118 additions & 25 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,45 +3,138 @@
**/backend/static/snapshots
**/backend/static/timelapse
**/backend/data/snapshots
**/backend-nest/static/canvas

# Generated code
**/node_modules/
**/.pnp
.pnp.js
.yarn/install-state.gz

# Testing
**/coverage

# Next.js
.next/
out/

# Production
build/
# Prisma generated files
**/backend/src/client/core/generated/*
**/backend/src/client/snapshots/generated/*
**/backend/src/client/core/kysely/*
**/backend-nest/src/common/database/generated/*
**/backend-nest/src/common/database/kysely/*

# Debug
# Logs
logs
*.log
npm-debug.log*
pnpm-debug.log*
yarn-debug.log*
yarn-error.log*
lerna-debug.log*

# Vercel
.vercel
# Diagnostic reports (https://nodejs.org/api/report.html)
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json

# Runtime data
pids
*.pid
*.seed
*.pid.lock

# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov

# Coverage directory used by tools like istanbul
coverage
*.lcov
.nyc_output

# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
.grunt

# Bower dependency directory (https://bower.io/)
bower_components

# node-waf configuration
.lock-wscript

# Compiled binary addons (https://nodejs.org/api/addons.html)
build/Release

# TypeScript
# Dependency directories
node_modules/
jspm_packages/
web_modules/
.pnpm-store

# Package manager / dependency state
.yarn-integrity
.pnp.*
.pnp.js
/.pnp
.yarn/*

# Yarn exceptions
!.yarn/patches
!.yarn/plugins
!.yarn/releases
!.yarn/sdks
!.yarn/versions

# TypeScript cache
*.tsbuildinfo
next-env.d.ts

# Environment variables
# Optional npm cache directory
.npm

# Optional editor / tool caches
.eslintcache
.stylelintcache
.node_repl_history
.vscode-test

# Output of 'npm pack'
*.tgz

# Environment files
.env
.env.*
.env*.local
.env.development
.env.test
.env.production
!.env.example
!.env.*.example

# Prisma generated files
**/backend/src/client/core/generated/*
**/backend/src/client/snapshots/generated/*
**/backend/src/client/core/kysely/*
# Parcel / build caches
.cache
.cache/
.parcel-cache
.vite/

# Framework build outputs
.next/
out/
.nuxt
.output
.dist
dist/
build/
tmp/
.tmp
.temp
.svelte-kit/
.vuepress/dist
**/.vitepress/dist
**/.vitepress/cache
.docusaurus
.serverless/
.fusebox/
.dynamodb/
.firebase/

# Misc
*.pem
.tern-port

# Vite
vite.config.js.timestamp-*
vite.config.ts.timestamp-*

# Testing
/coverage

# Vercel
.vercel


################################################################################
Expand Down
3 changes: 2 additions & 1 deletion .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -112,5 +112,6 @@
},
"[python]": {
"editor.defaultFormatter": "ms-python.black-formatter"
}
},
"typescript.tsdk": "node_modules/typescript/lib"
}
21 changes: 20 additions & 1 deletion biome.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,5 +23,24 @@
"enabled": true,
"clientKind": "git",
"useIgnoreFile": true
}
},
"overrides": [
{
"includes": [
"packages/backend-nest/**"
],
"javascript": {
"parser": {
"unsafeParameterDecoratorsEnabled": true
}
},
"linter": {
"rules": {
"style": {
"useImportType": "off"
}
}
}
}
]
}
13 changes: 13 additions & 0 deletions packages/backend-nest/.swcrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{
"$schema": "https://swc.rs/schema.json",
"sourceMaps": true,
"module": { "type": "commonjs" },
"jsc": {
"target": "esnext",
"parser": { "syntax": "typescript", "decorators": true },
"transform": { "legacyDecorator": true, "decoratorMetadata": true },
"baseUrl": ".",
"paths": { "@/*": ["./src/*"] }
},
"minify": false
}
114 changes: 114 additions & 0 deletions packages/backend-nest/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
<p align="center">
<a href="http://nestjs.com/" target="blank"><img src="https://nestjs.com/img/logo-small.svg" width="120" alt="Nest Logo" /></a>
</p>

[circleci-image]:
https://img.shields.io/circleci/build/github/nestjs/nest/master?token=abc123def456
[circleci-url]: https://circleci.com/gh/nestjs/nest

<p align="center">A progressive <a href="http://nodejs.org" target="_blank">Node.js</a> framework for building efficient and scalable server-side applications.</p>
<p align="center">
<a href="https://www.npmjs.com/~nestjscore" target="_blank"><img src="https://img.shields.io/npm/v/@nestjs/core.svg" alt="NPM Version" /></a>
<a href="https://www.npmjs.com/~nestjscore" target="_blank"><img src="https://img.shields.io/npm/l/@nestjs/core.svg" alt="Package License" /></a>
<a href="https://www.npmjs.com/~nestjscore" target="_blank"><img src="https://img.shields.io/npm/dm/@nestjs/common.svg" alt="NPM Downloads" /></a>
<a href="https://circleci.com/gh/nestjs/nest" target="_blank"><img src="https://img.shields.io/circleci/build/github/nestjs/nest/master" alt="CircleCI" /></a>
<a href="https://discord.gg/G7Qnnhy" target="_blank"><img src="https://img.shields.io/badge/discord-online-brightgreen.svg" alt="Discord"/></a>
<a href="https://opencollective.com/nest#backer" target="_blank"><img src="https://opencollective.com/nest/backers/badge.svg" alt="Backers on Open Collective" /></a>
<a href="https://opencollective.com/nest#sponsor" target="_blank"><img src="https://opencollective.com/nest/sponsors/badge.svg" alt="Sponsors on Open Collective" /></a>
<a href="https://paypal.me/kamilmysliwiec" target="_blank"><img src="https://img.shields.io/badge/Donate-PayPal-ff3f59.svg" alt="Donate us"/></a>
<a href="https://opencollective.com/nest#sponsor" target="_blank"><img src="https://img.shields.io/badge/Support%20us-Open%20Collective-41B883.svg" alt="Support us"></a>
<a href="https://twitter.com/nestframework" target="_blank"><img src="https://img.shields.io/twitter/follow/nestframework.svg?style=social&label=Follow" alt="Follow us on Twitter"></a>
</p>
<!--[![Backers on Open Collective](https://opencollective.com/nest/backers/badge.svg)](https://opencollective.com/nest#backer)
[![Sponsors on Open Collective](https://opencollective.com/nest/sponsors/badge.svg)](https://opencollective.com/nest#sponsor)-->

## Description

[Nest](https://github.com/nestjs/nest) framework TypeScript starter repository.

## Project setup

```bash
$ pnpm install
```

## Compile and run the project

```bash
# development
$ pnpm run start

# watch mode
$ pnpm run start:dev

# production mode
$ pnpm run start:prod
```

## Run tests

```bash
# unit tests (watch mode)
$ pnpm run test

# e2e tests
$ pnpm run test:e2e
```

## Deployment

When you're ready to deploy your NestJS application to production, there are
some key steps you can take to ensure it runs as efficiently as possible. Check
out the [deployment documentation](https://docs.nestjs.com/deployment) for more
information.

If you are looking for a cloud-based platform to deploy your NestJS application,
check out [Mau](https://mau.nestjs.com), our official platform for deploying
NestJS applications on AWS. Mau makes deployment straightforward and fast,
requiring just a few simple steps:

```bash
$ pnpm install -g @nestjs/mau
$ mau deploy
```

With Mau, you can deploy your application in just a few clicks, allowing you to
focus on building features rather than managing infrastructure.

## Resources

Check out a few resources that may come in handy when working with NestJS:

- Visit the [NestJS Documentation](https://docs.nestjs.com) to learn more about
the framework.
- For questions and support, please visit our
[Discord channel](https://discord.gg/G7Qnnhy).
- To dive deeper and get more hands-on experience, check out our official video
[courses](https://courses.nestjs.com/).
- Deploy your application to AWS with the help of
[NestJS Mau](https://mau.nestjs.com) in just a few clicks.
- Visualize your application graph and interact with the NestJS application in
real-time using [NestJS Devtools](https://devtools.nestjs.com).
- Need help with your project (part-time to full-time)? Check out our official
[enterprise support](https://enterprise.nestjs.com).
- To stay in the loop and get updates, follow us on
[X](https://x.com/nestframework) and
[LinkedIn](https://linkedin.com/company/nestjs).
- Looking for a job, or have a job to offer? Check out our official
[Jobs board](https://jobs.nestjs.com).

## Support

Nest is an MIT-licensed open source project. It can grow thanks to the sponsors
and support by the amazing backers. If you'd like to join them, please
[read more here](https://docs.nestjs.com/support).

## Stay in touch

- Author - [Kamil Myśliwiec](https://twitter.com/kammysliwiec)
- Website - [https://nestjs.com](https://nestjs.com/)
- Twitter - [@nestframework](https://twitter.com/nestframework)

## License

Nest is [MIT licensed](https://github.com/nestjs/nest/blob/master/LICENSE).
10 changes: 10 additions & 0 deletions packages/backend-nest/nest-cli.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"$schema": "https://json.schemastore.org/nest-cli",
"collection": "@nestjs/schematics",
"sourceRoot": "src",
"compilerOptions": {
"deleteOutDir": true,
"builder": "swc",
"typeCheck": true
}
}
Loading
Loading