Post Viewer and Analyzer with Go
Introduction
The Post Viewer and Analyzer is a 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.
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.
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/yourusername/post-viewer-analyzer.git
cd post-viewer-analyzer
- 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.
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
![Year](https://img.shields.io/badge/Year-2024-lightgrey)
Created with ❤️ by Son Nguyen in 2024.