DEV Community

Kaustubh
Kaustubh

Posted on

πŸš€ Introducing Pblog – A Dockerized TUI Blogging App

πŸ‘‹ Hey Dev Community!

Let me introduce you all to my latest project: Pblog! πŸŽ‰

Pblog is a Dockerized terminal-based user interface (TUI) blogging application designed to make blog management seamless. It allows users to create, read, update, and delete posts efficiently while supporting similarity-based search and paginated fetching for optimized performance and to prevent database overload.


πŸ€” Why This Project?

I started this project as a way to learn Docker and how to integrate a database into a backend. Through this journey, I discovered how a database like PostgreSQL communicates with another container over the same network, and it was a game-changer! πŸš€


✨ Features

πŸ“ CRUD Operations – Manage Your Blog with Ease

Pblog provides an intuitive way to handle blog posts with confirmation prompts and error handling.

  • Create a Post πŸ“

    Effortlessly add new blog entries.

    Post Creation Screenshot

  • Read a Post πŸ“–

    View detailed content with ease.

    Post Content Screenshot

  • Update a Post ✏️

    Automatically pre-fills previous content for quick editing.

    Post Update Screenshot

  • CRUD with Confirmation βœ…

    A confirmation of work done.

    Confirmation Screenshot

  • Error Handling ⚠️

    Robust validation and user-friendly error messages.

    Error Handling Screenshot


πŸ” Advanced Search Capabilities

  • ID-Based Search πŸ”’

    Retrieve posts using a unique identifier.

    ID Search Screenshot

  • Similarity-Based Search 🧐

    Find posts based on content relevance.

    Choice Screenshot

  • Paginated Fetching πŸ“Œ

    Optimizes performance by fetching posts in batches.

    Title Search Screenshot


πŸ› οΈ Technical Details

Pblog is built using:

  • Docker 🐳 – For containerization and environment consistency.
  • Go πŸš€ – Chosen for its concurrency, performance, and simplicity in backend development.
  • PostgreSQL πŸ›’οΈ – Reliable, scalable, and feature-rich database.
  • GORM πŸ”Œ – An ORM that simplifies database interactions.
  • tview 🎨 – A powerful library for building TUI applications in Go.

⚑ Challenges Faced & Solutions

1️⃣ Switching Focus in TUI πŸ–₯️

Problem: Initially, I struggled to shift focus between different sections of the TUI.
Solution: Using tview.Pages, I was able to split the TUI into different sections and switch between them dynamically.

2️⃣ Docker Compose Database Integration πŸ³πŸ”—

Problem: The app couldn't communicate with the PostgreSQL database container.
Solution: The issue was that the app sometimes started before the database was fully ready. Adding depends_on in docker-compose.yml ensured the database initialized before the app started.

3️⃣ Terminal Capture Issue ⌨️

Problem: The database logs occupied the terminal, preventing the app from displaying the TUI.
Solution: Running the compose setup in detached mode (-d) and then using docker attach on the app container ensured the TUI appeared correctly.


πŸš€ What's Next?

πŸ” Search Filtering – Filter results through categories.

πŸ” Authentication – Implement login and write permissions.

🏷️ User Preferences – Recommend posts based on tags.

πŸ’° Payment Gateway – Enable monetization options.

πŸ—οΈ PostgreSQL Deployment – Deploy on a public server for worldwide sharing.


πŸŽ‰ Conclusion

Thanks for making it this far! πŸ™Œ This journey was incredibly rewarding as I went from knowing very little about Docker and database integration to building a fully functional application. If you find this project useful, check it out on GitHub and feel free to contribute! πŸš€

πŸ‘‰ GitHub Repo

Happy coding! πŸ˜ƒ

Top comments (0)