Skip to content

puni9869/pinmyblogs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

365 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ“Œ 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 Go Version License Stars


πŸ” 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
Production  β†’ PostgreSQL
Development β†’ SQLite

πŸš€ Getting Started

🧰 Prerequisites

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

πŸ“₯ Installation

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

βš™οΈ Environment Configuration

▢️ Run the Application

make server

Uses Air for automatic reload on code changes.


πŸ§ͺ Testing & Quality Checks

Run tests:

make test

Lint & static analysis:

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


πŸ“œ License

This project is licensed under the MIT License. See the 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!

About

Save your blogs and read it later.

Topics

Resources

License

Stars

2 stars

Watchers

1 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors