Post Viewer and Analyzer with Go
Introduction
The Post Viewer and Analyzer is a very simple web-based application built with Go. It serves a web interface that allows users to fetch posts from the JSONPlaceholder API, save these posts to a file, and perform a character frequency analysis on the saved data. This application demonstrates the use of Go for server-side web development, including handling HTTP requests, processing JSON, and rendering HTML templates.
Features
- Fetch Data: Users can fetch posts from the external JSONPlaceholder API.
- Save Data: Automatically saves fetched posts into a local JSON file.
- Analyze Data: Performs a character frequency analysis on the contents of the saved JSON file.
- Web Interface: Simple and user-friendly web interface to interact with the application.
Live Deployment
The application is deployed on Render and can be accessed using the following link: Post Viewer and Analyzer
Please note that the application is hosted on a free tier and may take some time to load initially.
Technology Stack
- Go: All server-side logic is implemented in Go, utilizing its standard library for web server functionality, file I/O, and concurrency.
- HTML/CSS: Front-end layout and styling.
- JSONPlaceholder API: External REST API used for fetching sample post data.
Why Go?
- Concurrency: Go’s built-in support for concurrency makes it easy to write efficient and scalable web servers.
- Standard Library: Go’s standard library provides robust support for web development, including an HTTP server, JSON encoding/decoding, and file I/O.
- Performance: Go is known for its fast compilation times and efficient runtime performance, making it a great choice for web applications.
- Community: Go has a large and active community, with extensive documentation and libraries available for web development.
Example Analysis Result
Getting Started
Prerequisites
- Go (version 1.14 or higher recommended)
- Internet connection (for fetching data from the external API)
- Web browser (for accessing the application)
Installation
- Clone the repository:
git clone https://github.com/hoangsonww/Post-Analyzer-Webserver.git
cd Post-Analyzer-Webserver
- Run the application:
Usage
- Run the application using the steps mentioned above, do not forget to run
go run main.go
!
- Open your web browser.
- Navigate to
http://localhost:8080/
to access the application.
- Use the following endpoints to interact with the application:
- Home Page:
/
- Fetch Posts:
/fetch
- Fetches posts from the JSONPlaceholder and saves them to a local file.
- Analyze Character Frequency:
/analyze
- Analyzes the frequency of each character in the saved posts.
- Add Post:
/add
- Adds a new post to the saved posts.
- Because it is currently a Backend-focus application, you can greatly enhanced it by adding a polished Frontend to it, such as by using React.js.
Application Structure
- main.go: Contains all the server-side logic including API calls, concurrency handling, file operations, and web server setup.
- home.html: HTML template file used for rendering the web interface.
- go.mod: Go module file that defines the project’s dependencies.
- posts.json: Local JSON file used to store the fetched posts.
Contributing
Contributions are what make the open-source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature
)
- Commit your Changes (
git commit -m 'Add some AmazingFeature'
)
- Push to the Branch (
git push origin feature/AmazingFeature
)
- Open a Pull Request
License
Distributed under the MIT License. See LICENSE
for more information.
Son Nguyen - https://github.com/hoangsonww
Acknowledgements
Created with ❤️ by Son Nguyen in 2024.