With over 20 years of experience in web and app development, I specialize in Elixir, among other programming languages
As a developer, I'm constantly seeking to expand my skills and build applications that provide real value. My latest project, a Web Forum, is a modern discussion platform built with Elixir and the Phoenix framework. In this post, I'll share what I'm working on and the technical decisions behind this project.
This new Forum is built with:
I'm currently enhancing the forum with image upload capabilities, allowing users to add visual content to their discussions. This feature is particularly important for special categories where visual content adds significant value to the conversation.
The image upload system I've built includes:
I've designed the forum with user experience at the forefront:
The Forum includes robust moderation capabilities:
Looking ahead, I'm planning to:
One of the interesting challenges I've faced is implementing real-time updates across the forum. Phoenix's PubSub system has been invaluable here, allowing me to broadcast changes to all connected users when new posts are created or topics are updated.
The code for handling real-time updates looks something like this:
# When a new post is created Phoenix.PubSub.broadcast( Forum.PubSub, "topic:#{topic.id}", {:post_created, post} ) # In the LiveView def handle_info({:post_created, post_id}, socket) do # Update the UI with the new post posts = Forums.list_posts_for_topic(socket.assigns.topic.id, current_user: socket.assigns.current_user) {:noreply, assign(socket, posts: posts)} end
Building this Forum has been a rewarding experience that has deepened my understanding of Elixir, Phoenix, and real-time web applications. I'm excited to continue developing this platform and seeing it grow into a vibrant community space.
If you're interested in functional programming or building community platforms, I'd love to connect and share experiences. Feel free to reach out or follow along with my development journey!
Contact me if you need a Web developer for your project or your company