Portfol.io is an example project that aims to provide decent complexity for a handful of examples in projects that use Golang and HTMX. Just keep in mind that I'm also learning while developing this project, so if you want a nice guide on how to build your application in the Go style, you are probably better off looking elsewhere. I just selected a handful of technologies that I thought would make it easier to develop without wasting too much time on configuration. In other words, if you plan to do a small application, this is absolutely not the place to look, and if you want to go big, you should take this code with a grain of salt.
Licenses and copyright clauses are housed on dependencies.md
- Echo: for routing and managing the web server. Echo
- Gorm: for managing the database. Gorm.io
- Bluemonday: for HTML sanitization. Bluemonday
- Bcrypt: for password hashing. bcrypt
- Goeasyi18n: for internazionalization. goeasyi18n
- Godotenv: just because I wanted to use a
.env
file during development. joho godotenv - Gorilla sessions: for managing sessions and coockies. sessions
- HTMX: for frontend management. HTMX
- Bootstrap: for styling. Bootstrap 4.6
- Summernote: for html editing on the client. Summernote
- Lumberjack: for rolling logs. lumberjack
The idea of the project is to develop a service that allows you to post different kinds of media, such as:
- Articles and other enriched text posts.
- Galleries of images with small descriptions for each image.
- The user's profile can be organized into sections.
- Users may tag different kinds of posts.
- Projects, which are links to git repositories. (Work in Progress)
Users have an account where they can post their content and organize it into sections:
- Profiles have some required information and some optional information.
- Other features have not yet been implemented.
What features are planned for the near future?
- Users may subscribe to other users. (Email may be required for this)
- Users can use tags and queries to filter and look for content.
- Users may upload audio files.
- Users may upload video files.
What features are not planned for the future?
- Recommendation system.
- Chats.
- Install go.
- Clone the repository and move into the folder:
git clone https://github.com/JuanJoCasamitjana/portfol.io.git cd portfol.io
- Set up the project:
- This will download all the required dependencies
go mod tidy
- You can set up a
.env
file with the following variables:- IMGBB_API_KEY: An api key for the Imgbb API
- PORT (optional): The port that the application should be started (it is
:8080
by default).
- To start the project you have 2 options:
- Install air and run
air
in your terminal - Execute
go run ./cmd/main.go
in your terminal
- Install air and run