Blogchain

module
v0.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 30, 2024 License: MIT

README


Blogchain

A simple blockchain-based blogging platform


Report Bug · Request Feature Documentation

Table of Contents
  1. About The Project
  2. Getting Started
  3. Roadmap
  4. Contributing
  5. License
  6. Contact
  7. Acknowledgments

About The Project

This project was created mostly for learning purposes. The app itself represents a frontend and backend api that uses document database and ethereum testnet. When user creates an account the ethereum address will be generated and asociated with their account. All user data are stored in the db. However, posts are stored in ethereum blockchain. There is also an admin account that signs all the transactions and pays the gas fees. Backend api uses jwt to authenticate users.

You can access api docs on http://localhost:4000/swagger/index.html

(back to top)

Built With

  • Golang
  • Vue.js
  • JavaScript
  • Solidity
  • MongoDB
  • Redis
  • Hardhat
  • Abigen
  • Ethereum

(back to top)

Getting Started

The simplest way to get started is to use docker. Otherwise you will have to install Go 1.22, npm, hardhat, mongod, redis. Startup the mongodb server, than hardhat tesnet, than frontend and backend api

Prerequisites

*docker *docker-compose *openssl

Installation

  1. Clone the repo
    git clone https://github.com/St3plox/Blogchain.git
    cd Blogchain
    
  2. Generate private key that is used in auth
    make gen-private
    
  3. build and run the app
    docker-compose up -d
    

Frontend can be accessed on port 8080, backend - 3000

(back to top)

Roadmap

  • Caching
  • Documentation
  • Media support
  • Adequate testing
  • CI/CD (or smth like this)
  • Recomendation engine
  • Improved UI/UX (no way)

See the open issues for a full list of proposed features (and known issues).

(back to top)

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.

If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

(back to top)

License

Distributed under the MIT License. See LICENSE.txt for more information.

(back to top)

Contact

Egor - st3pegor@gmail.com

(back to top)

Acknowledgments

(back to top)

Directories

Path Synopsis
app
business
data/order
Package order provides support for describing the ordering of data.
Package order provides support for describing the ordering of data.
sys/validate
Package validate contains the support for validating models.
Package validate contains the support for validating models.
web/v1
Package v1 represents types used by the web application for v1.
Package v1 represents types used by the web application for v1.
Package docs Code generated by swaggo/swag.
Package docs Code generated by swaggo/swag.
foundation
blockchain
Package blockchain provides functionality for interacting with the Ethereum blockchain.
Package blockchain provides functionality for interacting with the Ethereum blockchain.
blockchain/auth
Package auth provides ability to generate bind.TransactOpts using admin account
Package auth provides ability to generate bind.TransactOpts using admin account
cachestore
Package cachestore provides a caching mechanism using Redis as the storage backend.
Package cachestore provides a caching mechanism using Redis as the storage backend.
keystore
Package keystore implements the auth.KeyLookup interface.
Package keystore implements the auth.KeyLookup interface.
web

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL