An open API service indexing awesome lists of open source software.

https://github.com/puni9869/pinmyblogs

Save your blogs and read it later.
https://github.com/puni9869/pinmyblogs

List: pinmyblogs

awesome-list bookmarker ecmascript golang javascript student url url-shortener urllib

Last synced: 5 months ago
JSON representation

Save your blogs and read it later.

Awesome Lists containing this project

README

          

# ๐Ÿ“Œ pinmyblogs โ€” Open-Source Blog Bookmarking & Read-Later App (Go)

**pinmyblogs** is an open-source **blog bookmarking**, **read-later**, and **content organization** application built
with **Go (Golang)**.

Save blog links, extract metadata, organize reading lists, and revisit content distraction-free โ€” fast, secure, and
self-hosted.

> Ideal for developers, writers, and knowledge workers who want a simple, privacy-friendly alternative to hosted
> bookmark tools.

---

## ๐Ÿ“Š Project Status & Badges

[![Check](https://github.com/puni9869/pinmyblogs/actions/workflows/go.yml/badge.svg)](https://github.com/puni9869/pinmyblogs/actions/workflows/go.yml)
![Go Version](https://img.shields.io/github/go-mod/go-version/puni9869/pinmyblogs)
![License](https://img.shields.io/github/license/puni9869/pinmyblogs)
![Stars](https://img.shields.io/github/stars/puni9869/pinmyblogs?style=social)

---

## ๐Ÿ” What is pinmyblogs?

**pinmyblogs** is a lightweight **self-hosted bookmark manager** focused on:

- Saving blog URLs
- Extracting page metadata (title, favicon, etc.)
- Organizing blogs for later reading
- Running reliably in local or production environments

It is built with **performance, simplicity, and security** in mind.

---

## โœจ Features

- ๐Ÿ”– Save blog & article URLs
- ๐Ÿ—‚๏ธ Organize reading lists
- ๐Ÿ•ท๏ธ Automatic metadata scraping
- โšก High-performance Go backend
- ๐Ÿงฉ Clean, extensible architecture
- ๐Ÿ  Self-hosted & privacy-friendly

---

## ๐Ÿงฑ Tech Stack

- **Language:** Go (Golang)
- **Web Framework:** Gin
- **Database:** PostgreSQL or SQLite
- **Frontend:** HTML templates + Tailwind CSS
- **Build Tooling:** + Air (hot reload)

---

## ๐Ÿ—„๏ธ Database Support

pinmyblogs supports **multiple SQL databases**:

### โœ… PostgreSQL (Recommended for Production)

- High concurrency
- Strong data integrity
- Crash-safe & scalable

### โœ… SQLite (Development & Testing)

- Zero-config
- File-based
- Best for local usage

```text
Production โ†’ PostgreSQL
Development โ†’ SQLite
````

---

## ๐Ÿš€ Getting Started

### ๐Ÿงฐ Prerequisites

* Go (latest stable version)
* PostgreSQL (optional, for production)
* SQLite (optional, for development)
* Make (recommended)

---

### ๐Ÿ“ฅ Installation

```bash
git clone https://github.com/puni9869/pinmyblogs.git
cd pinmyblogs
```

---

### โš™๏ธ Environment Configuration

### โ–ถ๏ธ Run the Application

```bash
make server
```

Uses **Air** for automatic reload on code changes.

---

## ๐Ÿงช Testing & Quality Checks

Run tests:

```bash
make test
```

Lint & static analysis:

```bash
make lint
make vet
make govulncheck
```

---

## ๐Ÿ—‚๏ธ Project Structure

```
.
โ”œโ”€โ”€ cmd/ # Application entrypoints
โ”œโ”€โ”€ handlers/ # HTTP handlers
โ”œโ”€โ”€ middleware/ # CSP & security headers
โ”œโ”€โ”€ models/ # Database models
โ”œโ”€โ”€ pkg/ # Shared packages (scraping, utils)
โ”œโ”€โ”€ templates/ # HTML templates
โ”œโ”€โ”€ frontend/ # Static assets
โ”œโ”€โ”€ types/ # Forms & shared types
โ””โ”€โ”€ Makefile # Dev & build commands
```

---

## ๐Ÿ” Security

pinmyblogs includes production-grade security defaults:

* Strict Content Security Policy (CSP)
* Secure HTTP headers
* Clickjacking protection
* MIME-type sniffing prevention

Designed to be safe by default.

---

## ๐Ÿค Contributing

Contributions are welcome!

1. Fork the repository
2. Create a feature branch
3. Add tests where applicable
4. Submit a pull request

See issues for ideas and improvements.

---

## ๐Ÿ› Issues & Feature Requests

Found a bug or have a feature idea?

๐Ÿ‘‰ [https://github.com/puni9869/pinmyblogs/issues](https://github.com/puni9869/pinmyblogs/issues)

---

## ๐Ÿ“œ License

This project is licensed under the **MIT License**.
See the [LICENSE](LICENSE) file for details.

---

## โญ Why pinmyblogs?

* Open-source
* Self-hosted
* Developer-friendly
* Privacy-focused
* Written in Go

If you find this project useful, please โญ star the repository โ€” it helps others discover it!