{"id":15178970,"url":"https://github.com/richtr/baseapp","last_synced_at":"2025-10-12T20:37:59.010Z","repository":{"id":16322870,"uuid":"19072037","full_name":"richtr/baseapp","owner":"richtr","description":"Bootstrap-based web application scaffolding built in Go on top of the Revel Web Framework w/ Docker build support","archived":false,"fork":false,"pushed_at":"2018-01-30T21:00:08.000Z","size":3656,"stargazers_count":91,"open_issues_count":7,"forks_count":30,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-01-31T22:22:38.268Z","etag":null,"topics":["baseapp","bootstrap3","docker","golang","revel","revel-applications"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/richtr.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-04-23T14:09:58.000Z","updated_at":"2024-02-16T12:53:29.000Z","dependencies_parsed_at":"2022-08-04T09:00:20.846Z","dependency_job_id":null,"html_url":"https://github.com/richtr/baseapp","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/richtr%2Fbaseapp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/richtr%2Fbaseapp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/richtr%2Fbaseapp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/richtr%2Fbaseapp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/richtr","download_url":"https://codeload.github.com/richtr/baseapp/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":238386110,"owners_count":19463301,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["baseapp","bootstrap3","docker","golang","revel","revel-applications"],"created_at":"2024-09-27T15:42:56.795Z","updated_at":"2025-10-12T20:37:53.977Z","avatar_url":"https://github.com/richtr.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"BaseApp\n=======\n\n#### A [Bootstrap](http://getbootstrap.com)-based web application built in [Go](http://golang.org) on top of the [Revel Web Framework](https://revel.github.io) ####\n\nBaseApp is a web application that provides web application scaffolding with the following features out of the box:\n\n* Basic pages (Home, About Us, Contact Us, etc)\n* Account registration (including password strength meter and safe storage of passwords with [bcrypt](https://en.wikipedia.org/wiki/Bcrypt))\n* Account confirmation via email (via configurable e-mail settings)\n* Account recovery via email (via configurable e-mail settings)\n* Account log in (by username or email address)\n* Public user profiles (with [Gravatar](http://gravatar.com/) integration for profile photos and profile edit functionality)\n* Public user posts (with full [Markdown](http://daringfireball.net/projects/markdown/) support and edit + delete functionality)\n* Social Features (Profile Follower and Following Counts and Post Likes)\n* People finder search (by username or full name)\n* Auto-provisioned backend data store (SQLite3, MySQL, PostgreSQL)\n* Full live client-side and static server-side form validation\n* Full non-interactive and interactive testing framework (Test-driven development process)\n* Responsive front-end design with [Bootstrap](http://getbootstrap.com) (looks good on mobile, tablet and desktop screen sizes)\n\n### Contents ###\n\n* [Screenshots](#screenshots)\n* [Quick Start](#quick-start)\n* [BaseApp Run Modes](#baseapp-run-modes)\n* [Docker Usage](#docker-usage)\n* [Feedback](#feedback)\n* [License](#license)\n\n### Screenshots ###\n\nExample Home Page:\n\n\u003cimg src=\"https://github.com/richtr/baseapp/raw/master/screenshots/01.HomePage.png\" style=\"max-width: 100%\"/\u003e\n\nUser Registration Form:\n\n\u003cimg src=\"https://github.com/richtr/baseapp/raw/master/screenshots/02.Register.png\" style=\"max-width: 100%\"/\u003e\n\nUser Registration Form - Form Validation Failed:\n\n\u003cimg src=\"https://github.com/richtr/baseapp/raw/master/screenshots/09.Register_Fail.png\" style=\"max-width: 100%\"/\u003e\n\nUser Login Form:\n\n\u003cimg src=\"https://github.com/richtr/baseapp/raw/master/screenshots/03.Login.png\" style=\"max-width: 100%\"/\u003e\n\nDisplay User Profile:\n\n\u003cimg src=\"https://github.com/richtr/baseapp/raw/master/screenshots/04.Profile.png\" style=\"max-width: 100%\"/\u003e\n\nFollowers Display:\n\n\u003cimg src=\"https://github.com/richtr/baseapp/raw/master/screenshots/11.Followers.png\" style=\"max-width: 100%\"/\u003e\n\nFollowing Display:\n\n\u003cimg src=\"https://github.com/richtr/baseapp/raw/master/screenshots/12.Following.png\" style=\"max-width: 100%\"/\u003e\n\nEdit User Profile Form:\n\n\u003cimg src=\"https://github.com/richtr/baseapp/raw/master/screenshots/05.EditProfile.png\" style=\"max-width: 100%\"/\u003e\n\nNew Post Form:\n\n\u003cimg src=\"https://github.com/richtr/baseapp/raw/master/screenshots/06.NewPost.png\" style=\"max-width: 100%\"/\u003e\n\nPost Display:\n\n\u003cimg src=\"https://github.com/richtr/baseapp/raw/master/screenshots/10.Post.png\" style=\"max-width: 100%\"/\u003e\n\nUser Search:\n\n\u003cimg src=\"https://github.com/richtr/baseapp/raw/master/screenshots/13.Search.png\" style=\"max-width: 100%\"/\u003e\n\nReset Password Form (if email settings are provided in `conf/app.conf`):\n\n\u003cimg src=\"https://github.com/richtr/baseapp/raw/master/screenshots/07.ResetPwd.png\" style=\"max-width: 100%\"/\u003e\n\nInteractive Test Suite (at `http://localhost:9000/@tests`)\n\n\u003cimg src=\"https://github.com/richtr/baseapp/raw/master/screenshots/08.TestRunner.png\" style=\"max-width: 100%\"/\u003e\n\n### Quick Start ####\n\n#### Prerequisites ####\n\nYou will need a [functioning Revel installation](https://revel.github.io/tutorial/gettingstarted.html) for BaseApp to work.\n\n#### Installing BaseApp ####\n\nTo get [BaseApp](https://github.com/richtr/baseapp), run\n\n    go get github.com/richtr/baseapp/...\n\nThis command does a couple things:\n\n* Go uses git to clone the repository into $GOPATH/src/github.com/richtr/baseapp/\n* Go transitively finds all of the dependencies and runs go get on them as well.\n\n#### Configuring BaseApp ####\n\nBefore you can start using BaseApp you will need to add your own `app.conf` file in the `conf/` directory. You can copy and use the default configuration file provided at [`/conf/app.conf.default`](https://github.com/richtr/baseapp/blob/master/conf/app.conf.default) with\n\n    cp $GOPATH/src/github.com/richtr/baseapp/conf/app.conf.default $GOPATH/src/github.com/richtr/baseapp/conf/app.conf\n\nNote: It is highly recommended that you review the configuration options available in [`app.conf.default`](https://github.com/richtr/baseapp/blob/master/conf/app.conf.default) before you run your project for the first time!\n\nYou can customize the configuration of your BaseApp application either directly in your `app.conf` or via environment variables (see [Running BaseApp](#running-baseapp) below for instructions on running BaseApp with environment variable overrides).\n\n| Configuration Name | Environment Variable Name | Description |\n| --- | --- | --- |\n| - | `BASEAPP_RUN_LEVEL` | The [run level](#baseapp-run-modes) of your application. |\n| `app.name` | `BASEAPP_APPLICATION_NAME` | The name of your application.\u003cbr\u003e\u003cbr\u003e_default: `\"BaseApp\"`_ |\n| `http.host` | `BASEAPP_SERVER_HOST` | The fully qualified address for your application.\u003cbr\u003e\u003cbr\u003e_default: `\"http://localhost:9000\"`_ |\n| `http.port` | `BASEAPP_SERVER_PORT` | The port on which to expose your application.\u003cbr\u003e\u003cbr\u003e_default: `9000`_ |\n| `http.ssl` | `BASEAPP_SERVER_SSL` | Flag to indicate that BaseApp should be served over HTTPS\u003cbr\u003e\u003cbr\u003e_default: `false`_ |\n| `http.sslcert` | `BASEAPP_SERVER_SSLCERT` | Your SSL certificate as a string\u003cbr\u003e\u003cbr\u003e_default: ``_ |\n| `http.sslkey` | `BASEAPP_SERVER_SSLKEY` | Your SSL private key as a string\u003cbr\u003e\u003cbr\u003e_default: ``_ |\n| `db.driver` | `BASEAPP_DATABASE_DRIVER` | The Go driver name for your database. |\n| `db.import` | `BASEAPP_DATABASE_IMPORT` | The Go driver library for your database |\n| `db.spec` | `BASEAPP_DATABASE_SPEC` | The Go driver connection string for your database |\n| `mailer.server` | `BASEAPP_MAILER_SERVER` | SMTP server address |\n| `mailer.port` | `BASEAPP_MAILER_PORT` | SMTP server port |\n| `mailer.username` | `BASEAPP_MAILER_USERNAME` | SMTP server user name |\n| `mailer.password` | `BASEAPP_MAILER_PASSWORD` | SMTP server password |\n| `mailer.fromaddress` | `BASEAPP_MAILER_FROMADDRESS` | The email address to include as the sender address |\n\n#### Running BaseApp ####\n\nOnce you have set up an `app.conf` file you can start BaseApp [_in test mode_](#baseapp-run-modes), with\n\n    revel run github.com/richtr/baseapp test\n\nIf you have set up [BaseApp environment variable overrides](#configuring-baseapp) you should start BaseApp with the included [`start.sh`](https://github.com/richtr/baseapp/blob/master/start.sh) script instead:\n\n    ./start.sh\n\nPoint your browser to your BaseApp installation at `http://localhost:9000` (or the host/port you specified in your configuration) and BaseApp should compile and run.\n\n### BaseApp Run Modes ###\n\nBaseApp can be run in three different modes that are each useful for different stages of application development:\n\n1. `test` mode: Uses an *in-memory* sqlite3 datastore that is created and populated with basic data which is always wiped when your application ends.\n\n    You can run BaseApp in `test` mode as follows:\n\n        $\u003e revel run github.com/richtr/baseapp test 9000\n\n    Once BaseApp is up and running you can point your browser to `http://localhost:9000` to use the application or `http://localhost:9000/@tests` to run the interactive test suite.\n\n    To run the BaseApp test suite in non-interactive mode you can use:\n\n        $\u003e revel test github.com/richtr/baseapp test 9000\n\n    If testing is successful then a `test-results/result.passed` is written. Otherwise a `test-results/result.failed` is written. You can use check for these files when testing before deployment within your own continuous integration system.\n\n2. `dev` mode [default mode]: Uses a blank sqlite3/mysql/postgres datastore that is created if it does not already exist at your chosen location and persists whenever your application is restarted. Outputs detailed error messages if something goes wrong in your application.\n\n    You can run BaseApp in `dev` mode as follows:\n\n        $\u003e revel run github.com/richtr/baseapp dev 9000\n\n    Or, simply:\n\n        $\u003e revel run github.com/richtr/baseapp\n\n3. `prod` mode: Uses a blank sqlite3/mysql/postgres datastore that is created if it does not already exist at your chosen location and persists whenever your application is restarted. Outputs user-friendly error messages if something goes wrong in your application.\n\n    You can run BaseApp in `prod` mode as follows:\n\n        $\u003e revel run github.com/richtr/baseapp prod 9000\n\nNote: Both `dev` and `prod` modes require a configured backend DB. See [app.conf.default](https://github.com/richtr/baseapp/blob/master/conf/app.conf.default). The `test` mode creates an in-memory database representation that dies when the app dies.\n\n### Docker Usage ###\n\nThis project comes with its own `Dockerfile` for building your own LXC container via [Docker](http://www.docker.io) to host BaseApp.\n\nYou will need a [functioning Docker installation](http://docs.docker.io/installation/) to build and use BaseApp as an LXC container.\n\nTo build your own BaseApp LXC container via Docker is easy:\n\n```\n$ git clone https://github.com/richtr/baseapp.git\n$ cd baseapp\n$ docker build -t=\"richtr/baseapp\" .\n```\n\nTo spawn a new instance of BaseApp:\n\n```bash\n$ docker run -p 9000:9000 -d richtr/baseapp\n```\n\nThen you can the visit the following URL in a browser on your host machine to get started:\n\n```\nhttp://127.0.0.1:9000\n```\n\n#### Docker Compose ####\n\nAn example `docker-compose` configuration is provided with this repo. To build and run the infrastructure defined in the `docker-compose` file, run the following:\n\n```\n$ docker-compose up\n```\n\nIt can take a while to bring this architecture up but once BaseApp has been built in its docker container, you can navigate to `http://dockerhost:80` (or `http://localhost:80`) to see everything running.\n\nSee the [Configuring BaseApp](#configuring-baseapp) section above for available docker compose environment variable overrides.\n\n### Feedback ###\n\nIf you find any bugs or issues please report them on the [BaseApp Issue Tracker](https://github.com/richtr/baseapp/issues).\n\nIf you would like to contribute to this project please consider [forking this repo](https://github.com/richtr/baseapp/fork), making your changes and then creating a new [Pull Request](https://github.com/richtr/baseapp/pulls) back to the main code repository.\n\n### License ###\n\nMIT. Copyright (c) [Rich Tibbett](https://twitter.com/richtibbett).\n\nSee the [LICENSE](https://github.com/richtr/baseapp/blob/master/LICENSE) file.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frichtr%2Fbaseapp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frichtr%2Fbaseapp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frichtr%2Fbaseapp/lists"}