Trotto Go Links
(See the guide here to deploy to Heroku in minutes.)
If you'd rather use the fully-managed instance of Trotto, visit www.trot.to.
Trotto provides all the baseline functionality you'd expect from a go links solution, including the ability to create, use, and modify go links that are shared with your organization—and with nobody else.
Trotto also includes powerful features above and beyond a basic go links implementation, including a searchable go
links directory, a browser extension that makes go links work instantly,
and programmatic links, which are go links containing placeholders that map onto the destination
go/gh/%s pointing to
For a full list of Trotto's features, check out https://www.trot.to/how-it-works.
At the moment, the open-source app solely supports authentication using a Google account, but we plan to add support for additional identity providers upon request. So if you need support for another provider, submit a GitHub issue, and we'll help you out!
Deploy the app
See our deployment docs:
You can bring up a local instance of Trotto within a few minutes.
Clone this repository
git clone firstname.lastname@example.org:trotto/go-links.git cd go-links
Create a virtualenv
go-links/server directory, create and enter a
Python 3.8 virtualenv and install dependencies:
cd go-links/server python3 -m venv .virtualenv source .virtualenv/bin/activate pip install -r src/requirements.txt
You can use
pyenv as well.
Add an app.yml file
Add a file at
server/src/config/app.yml with this format:
sessions_secret: any_secret postgres: url: "postgresql://username:password@host/database"
postgres.url should be the connection string for a Postgres 12 database. The server
startup script will add the tables Trotto needs.
Start the backend server
server/ directory, run:
Start the frontend development server
In a separate terminal, from the
frontend/ directory, run:
yarn install ./start_dev_server.sh
Now, you can access the local instance at http://localhost:5007.
Most server-side and frontend changes should be picked up automatically, thanks to the Flask dev server and React Hot Loader.