Skip to content

Conversation

daedlock
Copy link
Contributor

@daedlock daedlock commented Sep 24, 2025

Relevant Issues:

#783

Overview

This update gives the dojo platform a major refresh.
The workspace now feels smoother and more polished, with fullscreen mode, floating navigation, and faster loading. A new theme system ties everything together with multiple color schemes and consistent styling across the terminal, VSCode, and the rest of the UI.

Key Highlights

  • Frontend: NextJS with SSR, served from a new container in the infra.
  • Flag: Flag detection from clipboard and streamlined path to next challenge
  • Theme system: Multiple color schemes (Everforest, Gruvbox, Matrix, Perplexity, Amethyst, Dracula, Solarized) and dynamic terminal theme switching, all applied consistently across the platform.
  • Infrastructure upgrades: Dedicated frontend Dockerfile, improved docker-compose configuration, and a more capable Nix-based development setup.
  • Backend enhancements: Challenge termination endpoint with automatic Docker cleanup, improved search API, cookie-based authentication, stronger CTFd integration, and more accurate real-time dojo statistics.

WIP:

  • Workspace experience: Fullscreen mode, floating navigation, faster iframe-cached loading
  • User profile page
  • Leaderboard section in dojo page
  • event bubbling from iframe outwards

Note

deploy-local Deploy script i use locally (should be removed and envs should be defined somewhere else)

Demo

https://app.dlock.tech/

Screenshots / Videos

image

@daedlock daedlock force-pushed the react-zustand-to-next branch from ee85394 to 6fbe475 Compare September 25, 2025 00:07
@daedlock daedlock changed the title feat: migrate frontend from CSR to Next.js SSR with enhanced workspace WIP: Redesign pwn.college Sep 25, 2025
@daedlock
Copy link
Contributor Author

daedlock commented Sep 26, 2025

Zen mode

recording_2025-09-26_04.04.42.mp4

Copy link
Member

@ConnorNelson ConnorNelson left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All I've really reviewed right now is backend changes, which it would be great to split out into a separate PR.

Specifically this includes:

  • ctfd/patches (with the discussed changes)
  • dojo_plugin

Within the plugin, I don't think we want:

  • dojo_plugin/utils/workspace.py changes (at least right now).
  • dojo_plugin/utils/stats.py changes to get_dojo_stats (we need the early return for performance reasons, it's intentionally disabled until we find a better solution).
  • dojo_plugin/api/v1/search.py changes (we don't want links to change).

And of course with consideration of all the comments :)

"HOME": "/home/hacker",
"PATH": env_path,
"SHELL": f"{dojo_bin_path}/bash",
"SHELL": f"{dojo_bin_path}/fish",
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's not bring this in for now.

@ConnorNelson
Copy link
Member

As I said in our chat, we're going to try to integrate like this:

  1. bring in backend changes
  2. bring in additional frontend sitting on future.pwn.college
  3. bring in workspace (nix) changes

The third is going to ultimately require some modifications, for example we unfortunately can't change the default shell to fish (but I'd be happy to have support for a user to be able to change their default shell).


And of course, since I haven't said it enough, this is really super awesome stuff! Super excited about all the work you're putting in!

@daedlock
Copy link
Contributor Author

Thanks for the review and comments! Will address everything mentioned here and have a new PR for just the backend changes

@daedlock
Copy link
Contributor Author

@ConnorNelson I created a new PR for the backend portion, addressing all backend comments you left

#930

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants