What I built
If you're anything like me, you believe in getting things done as quickly as possible, but when the time comes for a performance review or job interview, you're stuck with a bad memory and a blank page, frantically combing through JIRA tickets, emails, and closed PRs from multiple projects.
Now, you don't have to think about what you did in the last six months or a year with TheBrag!
Brag now, remember later.
TheBrag is a CLI-based application that lets you save your brags (things you want to show off) directly from your terminal.
TheBrag has the following features:
- You can add, view, update, or delete brags directly from the CLI.
- Create custom categories to sort out your accomplishments like work tasks, personal tasks, blogs, etc.
- Use the "export to file" functionality to recieve a copy of your accomplishments via email.
- You can export all your data or by selected categories within a date range.
Category Submission:
- Wacky Wildcard
- Integration Innovators
- SaaS Superstars
App Link
Download the CLI application from this link.
Installation Steps:
- Download the application from the link above.
- Run
chmod a+x thebrag
from the directory where the file was downloaded. This will make the file executable for all groups on your system. - From the same directory you can run
./thebrag
on your terminal to start using it. OR - If you want to access
thebrag
command from anywhere in your system, you need to add the application path to your $PATH environment variable.- Navigate to your home directory by typing
cd
in the terminal. - Type
nano .profile
ornano .zshrc
. - Inside this file, add the following line:
export PATH=$PATH:/foo/bar
(Replace /foo/bar with the location of the downloaded file)
- Navigate to your home directory by typing
- Save and quit.
- Exit Terminal.app (or whichever term program you're using) and restart it.
You should now be able to run thebrag
from anywhere.
Screenshots
-
thebrag
command: Gives the basic information about the app along with a list of commands that can be used.
-
thebrag login
command
- Add a new category:
thebrag category -c "<category_name>"
- List all existing categories:
thebrag category
- Add a brag:
thebrag add -c "<category_name>" -t "<brag title>" -d "<brag details>"
- List brags:
thebrag get -n <no. of brags>
thebrag get -n <no. of brags> -s <skip_from_start>
- Get a specific brag:
thebrag get -i <brag_id>
- Update a brag:
thebrag update -i <brag_id> -d "new details content" -t "new title content" -c "new category name"
- Delete a brag:
thebrag delete -i <brag_id>
- Export brags:
thebrag export -d "<from_date>,<to_date>" -c "<category_name>"
- Received Email:
- Exported Brags CSV:
Description
A high level view of the system:
- The
user
interacts with the application via theCLI
to manage their brags. - The request is sent to the
thebrag APIs
, hosted on Linode servers, for processing . - The API interacts with the
MySQL
database to get/update the data. - The
Export Module
will let you export brags into a CSV file. - After generating the file, it is uploaded an Object Storage bucket on Linode and sent to the registered email id using SendGrid Emails.
Link to Source Code
- APIs: thebrag-api
- CLI: thebrag-cli
Permissive License
MIT License
Background
From trying to come up with things to write about in the year end review for appraisals and giving talking points to help my manager for award nomination at work, made me think that I should start logging the things I've worked on in one place.
Inspired by this post by Julia Evans and practically spending all day in the terminal, I decided to just a write CLI application which will let me log my work directly from the terminal.
How I built it
Language, Framework and Libraries:
TheBrag-CLI uses the Golang's Cobra library which provides a simple interface to create powerful CLI applications.
TheBrag-API is built using Golang's Gin framework for easy implementation of REST-APIs and Gorm for MySQL integration.
This is my first GoLang Application 🤩
Infrastructure:
- APIs are deployed on Linux virtual machines called Compute Instances provided by Linode. For demo purpose this is setup on a shared CPU nanode 1GB.
- MySQL is also provisioned on Linode using their high performing managed database clusters. Also on shared CPU nanode 1GB.
- Exported brag files are uploaded in a private bucket on Object Storage offering by Linode to save the exported data files on cloud.
- SendGrid is used to send the email containing the exported data file.
- Thebrag CLI app is hosted in a bucket on Object Storage by Linode with public read access to allow anyone to download the app and start using it.
Future Scope/Roadmap
This is not the end for this project, I'm going to continue adding features to this.
- Filter brags by category, date range etc.
- Setup Github Actions for deployment.
- Convert your brags into a resume.
- Performance optimisation: Move export functionality to a worker.
- Dashboard for people who prefer a GUI.
PS: Feel free to share suggestions or feature requests.
Additional Resources/Info
[1] Opening a port on linux or this one linux-how-to-open-a-port
[2] Copy files from local to remote server
[3] All go tutorials use localhost for API to listen to, remember to change the IP for production deployment. After 2 days of confusion I found this: port-seems-to-be-open-but-connection-refused
[4] SendGrid for emails
Top comments (1)
Congratulations! This is a great project!!