Ankhers
Holodeck: a showcase app for the Hologram framework
Hey folks,
I’ve been contributing to Hologram and building applications with it lately. It just hit a big milestone: v0.9 was recently released and includes real-time features (release post here if you want to read more). This release has unblocked me from building real applications with it. So, to learn the framework better, I put together a small project to test out how Hologram holds up in a real, albeit very small, project. The result is Holodeck.
It currently includes three applications:
- Chat - Pick a name, create/join rooms, and chat. Messages are persisted and broadcast to everyone in the room over a Hologram subscription. Joining a room pulls the full room history.
- Dashboard - A live look at the running BEAM: per-core CPU, memory breakdown, scheduler/uptime info, and the top processes (sortable by memory, reductions, or pid). It also streams the app’s logs into the page live.
- Polls - Create a simple poll, vote, and watch the results update live. The results page also demos Hologram’s JS interop by working directly with Chart.js.
Keep in mind that I left a few things out on purpose, since I wanted to focus on Hologram and on keeping the app easy to pick up and use. So there’s no authentication in chat, a fixed number of answers in polls, and so on.
Live demo: https://holodeck-divine-dream-8428.fly.dev
Source: ~ankhers/holodeck - A showcase of different hologram applications - sourcehut git
Feedback is welcome! If you know a better way to accomplish something, please let me know. And if there’s another part of Hologram you’d like to see demoed, say the word and I’ll see about building it. Contributions are welcome too.
Trending in Discussions
Other Trending Topics
Latest Hologram Threads
Chat & Discussions>Discussions
Latest on Elixir Forum
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #deployment
- #library
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #channels
- #elixirconf
- #exunit
- #discussion
- #code-sync
- #javascript
- #podcasts
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #elixir-ls
- #phoenix_html
- #iex
- #blog-post
- #graphql
- #genstage
- #ai
- #elixirconf-us
- #websockets
- #supervisor
- #advent-of-code
- #distillery
- #processes
- #api
- #forms
- #metaprogramming
- #performance
- #security










Most Liked
nxy7
Chat is also broken, swallows some messages for some reason (I think they’re visible after refresh though)
bartblast
Cool stuff, congrats!
If you open the browser console there are a few errors (a
FunctionClauseErroramong them) that I suspect are behind the funky behaviour, so that’s probably where I’d start. (Happy to help if you get stuck)One separate note: the broadcasting goes through
Hologram.Realtime.*directly, which is meant more as an escape hatch. For chat it’s better to useput_broadcastfrom inside a handler - it’s transactional, so the send is tied to the handler succeeding. It’s usually a small change too: if whatever does the broadcast is reachable from a handler that carries the server struct (likeinit/3orcommand/3), you just thread that server struct down to it and callput_broadcastthere.jam
Cool! For some reason, on mobile the buttons don’t seem to work. For example I wasn’t able to create a chat room.
The source hut link has a typo. I found the repo here ~ankhers/holodeck - A showcase of different hologram applications - sourcehut git but can’t seem to find the hologram specific code.
Last Post!
Driky
Cool stuff!
Here are some bugs I found: