Skip to content

Repository files navigation

BaseApp

A Bootstrap-based web application built in Go on top of the Revel Web Framework

BaseApp is a web application that provides web application scaffolding with the following features out of the box:

  • Basic pages (Home, About Us, Contact Us, etc)
  • Account registration (including password strength meter and safe storage of passwords with bcrypt)
  • Account confirmation via email (via configurable e-mail settings)
  • Account recovery via email (via configurable e-mail settings)
  • Account log in (by username or email address)
  • Public user profiles (with Gravatar integration for profile photos and profile edit functionality)
  • Public user posts (with full Markdown support and edit + delete functionality)
  • Social Features (Profile Follower and Following Counts and Post Likes)
  • People finder search (by username or full name)
  • Auto-provisioned backend data store (SQLite3, MySQL, PostgreSQL)
  • Full live client-side and static server-side form validation
  • Full non-interactive and interactive testing framework (Test-driven development process)
  • Responsive front-end design with Bootstrap (looks good on mobile, tablet and desktop screen sizes)

Contents

Screenshots

Example Home Page:

User Registration Form:

User Registration Form - Form Validation Failed:

User Login Form:

Display User Profile:

Followers Display:

Following Display:

Edit User Profile Form:

New Post Form:

Post Display:

User Search:

Reset Password Form (if email settings are provided in conf/app.conf):

Interactive Test Suite (at http://localhost:9000/@tests)

Quick Start

Prerequisites

You will need a functioning Revel installation for BaseApp to work.

Installing BaseApp

To get BaseApp, run

go get github.com/richtr/baseapp/...

This command does a couple things:

  • Go uses git to clone the repository into $GOPATH/src/github.com/richtr/baseapp/
  • Go transitively finds all of the dependencies and runs go get on them as well.

Configuring BaseApp

Before 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 with

cp $GOPATH/src/github.com/richtr/baseapp/conf/app.conf.default $GOPATH/src/github.com/richtr/baseapp/conf/app.conf

Note: It is highly recommended that you review the configuration options available in app.conf.default before you run your project for the first time!

You can customize the configuration of your BaseApp application either directly in your app.conf or via environment variables (see Running BaseApp below for instructions on running BaseApp with environment variable overrides).

Configuration NameEnvironment Variable NameDescription
-BASEAPP_RUN_LEVELThe run level of your application.
app.nameBASEAPP_APPLICATION_NAMEThe name of your application.

default: "BaseApp"
http.hostBASEAPP_SERVER_HOSTThe fully qualified address for your application.

default: "http://localhost:9000"
http.portBASEAPP_SERVER_PORTThe port on which to expose your application.

default: 9000
http.sslBASEAPP_SERVER_SSLFlag to indicate that BaseApp should be served over HTTPS

default: false
http.sslcertBASEAPP_SERVER_SSLCERTYour SSL certificate as a string

default: ``
http.sslkeyBASEAPP_SERVER_SSLKEYYour SSL private key as a string

default: ``
db.driverBASEAPP_DATABASE_DRIVERThe Go driver name for your database.
db.importBASEAPP_DATABASE_IMPORTThe Go driver library for your database
db.specBASEAPP_DATABASE_SPECThe Go driver connection string for your database
mailer.serverBASEAPP_MAILER_SERVERSMTP server address
mailer.portBASEAPP_MAILER_PORTSMTP server port
mailer.usernameBASEAPP_MAILER_USERNAMESMTP server user name
mailer.passwordBASEAPP_MAILER_PASSWORDSMTP server password
mailer.fromaddressBASEAPP_MAILER_FROMADDRESSThe email address to include as the sender address

Running BaseApp

Once you have set up an app.conf file you can start BaseApp in test mode, with

revel run github.com/richtr/baseapp test

If you have set up BaseApp environment variable overrides you should start BaseApp with the included start.sh script instead:

./start.sh

Point 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.

BaseApp Run Modes

BaseApp can be run in three different modes that are each useful for different stages of application development:

  1. test mode: Uses an in-memory sqlite3 datastore that is created and populated with basic data which is always wiped when your application ends.

    You can run BaseApp in test mode as follows:

     $> revel run github.com/richtr/baseapp test 9000
    

    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.

    To run the BaseApp test suite in non-interactive mode you can use:

     $> revel test github.com/richtr/baseapp test 9000
    

    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.

  2. 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.

    You can run BaseApp in dev mode as follows:

     $> revel run github.com/richtr/baseapp dev 9000
    

    Or, simply:

     $> revel run github.com/richtr/baseapp
    
  3. 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.

    You can run BaseApp in prod mode as follows:

     $> revel run github.com/richtr/baseapp prod 9000
    

Note: Both dev and prod modes require a configured backend DB. See app.conf.default. The test mode creates an in-memory database representation that dies when the app dies.

Docker Usage

This project comes with its own Dockerfile for building your own LXC container via Docker to host BaseApp.

You will need a functioning Docker installation to build and use BaseApp as an LXC container.

To build your own BaseApp LXC container via Docker is easy:

$ git clone https://github.com/richtr/baseapp.git
$ cd baseapp
$ docker build -t="richtr/baseapp" .

To spawn a new instance of BaseApp:

$ docker run -p 9000:9000 -d richtr/baseapp

Then you can the visit the following URL in a browser on your host machine to get started:

http://127.0.0.1:9000

Docker Compose

An example docker-compose configuration is provided with this repo. To build and run the infrastructure defined in the docker-compose file, run the following:

$ docker-compose up

It 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.

See the Configuring BaseApp section above for available docker compose environment variable overrides.

Feedback

If you find any bugs or issues please report them on the BaseApp Issue Tracker.

If you would like to contribute to this project please consider forking this repo, making your changes and then creating a new Pull Request back to the main code repository.

License

MIT. Copyright (c) Rich Tibbett.

See the LICENSE file.

About

Bootstrap-based web application scaffolding built in Go on top of the Revel Web Framework w/ Docker build support

Topics

Resources

Stars

92 stars

Watchers

5 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
GitHub - richtr/baseapp: Bootstrap-based web application scaffolding built in Go on top of the Revel Web Framework w/ Docker build support · GitHub
Skip to content

Repository files navigation

BaseApp

A Bootstrap-based web application built in Go on top of the Revel Web Framework

BaseApp is a web application that provides web application scaffolding with the following features out of the box:

  • Basic pages (Home, About Us, Contact Us, etc)
  • Account registration (including password strength meter and safe storage of passwords with bcrypt)
  • Account confirmation via email (via configurable e-mail settings)
  • Account recovery via email (via configurable e-mail settings)
  • Account log in (by username or email address)
  • Public user profiles (with Gravatar integration for profile photos and profile edit functionality)
  • Public user posts (with full Markdown support and edit + delete functionality)
  • Social Features (Profile Follower and Following Counts and Post Likes)
  • People finder search (by username or full name)
  • Auto-provisioned backend data store (SQLite3, MySQL, PostgreSQL)
  • Full live client-side and static server-side form validation
  • Full non-interactive and interactive testing framework (Test-driven development process)
  • Responsive front-end design with Bootstrap (looks good on mobile, tablet and desktop screen sizes)

Contents

Screenshots

Example Home Page:

User Registration Form:

User Registration Form - Form Validation Failed:

User Login Form:

Display User Profile:

Followers Display:

Following Display:

Edit User Profile Form:

New Post Form:

Post Display:

User Search:

Reset Password Form (if email settings are provided in conf/app.conf):

Interactive Test Suite (at http://localhost:9000/@tests)

Quick Start

Prerequisites

You will need a functioning Revel installation for BaseApp to work.

Installing BaseApp

To get BaseApp, run

go get github.com/richtr/baseapp/...

This command does a couple things:

  • Go uses git to clone the repository into $GOPATH/src/github.com/richtr/baseapp/
  • Go transitively finds all of the dependencies and runs go get on them as well.

Configuring BaseApp

Before 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 with

cp $GOPATH/src/github.com/richtr/baseapp/conf/app.conf.default $GOPATH/src/github.com/richtr/baseapp/conf/app.conf

Note: It is highly recommended that you review the configuration options available in app.conf.default before you run your project for the first time!

You can customize the configuration of your BaseApp application either directly in your app.conf or via environment variables (see Running BaseApp below for instructions on running BaseApp with environment variable overrides).

Configuration NameEnvironment Variable NameDescription
-BASEAPP_RUN_LEVELThe run level of your application.
app.nameBASEAPP_APPLICATION_NAMEThe name of your application.

default: "BaseApp"
http.hostBASEAPP_SERVER_HOSTThe fully qualified address for your application.

default: "http://localhost:9000"
http.portBASEAPP_SERVER_PORTThe port on which to expose your application.

default: 9000
http.sslBASEAPP_SERVER_SSLFlag to indicate that BaseApp should be served over HTTPS

default: false
http.sslcertBASEAPP_SERVER_SSLCERTYour SSL certificate as a string

default: ``
http.sslkeyBASEAPP_SERVER_SSLKEYYour SSL private key as a string

default: ``
db.driverBASEAPP_DATABASE_DRIVERThe Go driver name for your database.
db.importBASEAPP_DATABASE_IMPORTThe Go driver library for your database
db.specBASEAPP_DATABASE_SPECThe Go driver connection string for your database
mailer.serverBASEAPP_MAILER_SERVERSMTP server address
mailer.portBASEAPP_MAILER_PORTSMTP server port
mailer.usernameBASEAPP_MAILER_USERNAMESMTP server user name
mailer.passwordBASEAPP_MAILER_PASSWORDSMTP server password
mailer.fromaddressBASEAPP_MAILER_FROMADDRESSThe email address to include as the sender address

Running BaseApp

Once you have set up an app.conf file you can start BaseApp in test mode, with

revel run github.com/richtr/baseapp test

If you have set up BaseApp environment variable overrides you should start BaseApp with the included start.sh script instead:

./start.sh

Point 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.

BaseApp Run Modes

BaseApp can be run in three different modes that are each useful for different stages of application development:

  1. test mode: Uses an in-memory sqlite3 datastore that is created and populated with basic data which is always wiped when your application ends.

    You can run BaseApp in test mode as follows:

     $> revel run github.com/richtr/baseapp test 9000
    

    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.

    To run the BaseApp test suite in non-interactive mode you can use:

     $> revel test github.com/richtr/baseapp test 9000
    

    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.

  2. 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.

    You can run BaseApp in dev mode as follows:

     $> revel run github.com/richtr/baseapp dev 9000
    

    Or, simply:

     $> revel run github.com/richtr/baseapp
    
  3. 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.

    You can run BaseApp in prod mode as follows:

     $> revel run github.com/richtr/baseapp prod 9000
    

Note: Both dev and prod modes require a configured backend DB. See app.conf.default. The test mode creates an in-memory database representation that dies when the app dies.

Docker Usage

This project comes with its own Dockerfile for building your own LXC container via Docker to host BaseApp.

You will need a functioning Docker installation to build and use BaseApp as an LXC container.

To build your own BaseApp LXC container via Docker is easy:

$ git clone https://github.com/richtr/baseapp.git
$ cd baseapp
$ docker build -t="richtr/baseapp" .

To spawn a new instance of BaseApp:

$ docker run -p 9000:9000 -d richtr/baseapp

Then you can the visit the following URL in a browser on your host machine to get started:

http://127.0.0.1:9000

Docker Compose

An example docker-compose configuration is provided with this repo. To build and run the infrastructure defined in the docker-compose file, run the following:

$ docker-compose up

It 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.

See the Configuring BaseApp section above for available docker compose environment variable overrides.

Feedback

If you find any bugs or issues please report them on the BaseApp Issue Tracker.

If you would like to contribute to this project please consider forking this repo, making your changes and then creating a new Pull Request back to the main code repository.

License

MIT. Copyright (c) Rich Tibbett.

See the LICENSE file.

About

Bootstrap-based web application scaffolding built in Go on top of the Revel Web Framework w/ Docker build support

Topics

Resources

Stars

92 stars

Watchers

5 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - richtr/baseapp: Bootstrap-based web application scaffolding built in Go on top of the Revel Web Framework w/ Docker build support · GitHub
Skip to content

Repository files navigation

BaseApp

A Bootstrap-based web application built in Go on top of the Revel Web Framework

BaseApp is a web application that provides web application scaffolding with the following features out of the box:

  • Basic pages (Home, About Us, Contact Us, etc)
  • Account registration (including password strength meter and safe storage of passwords with bcrypt)
  • Account confirmation via email (via configurable e-mail settings)
  • Account recovery via email (via configurable e-mail settings)
  • Account log in (by username or email address)
  • Public user profiles (with Gravatar integration for profile photos and profile edit functionality)
  • Public user posts (with full Markdown support and edit + delete functionality)
  • Social Features (Profile Follower and Following Counts and Post Likes)
  • People finder search (by username or full name)
  • Auto-provisioned backend data store (SQLite3, MySQL, PostgreSQL)
  • Full live client-side and static server-side form validation
  • Full non-interactive and interactive testing framework (Test-driven development process)
  • Responsive front-end design with Bootstrap (looks good on mobile, tablet and desktop screen sizes)

Contents

Screenshots

Example Home Page:

User Registration Form:

User Registration Form - Form Validation Failed:

User Login Form:

Display User Profile:

Followers Display:

Following Display:

Edit User Profile Form:

New Post Form:

Post Display:

User Search:

Reset Password Form (if email settings are provided in conf/app.conf):

Interactive Test Suite (at http://localhost:9000/@tests)

Quick Start

Prerequisites

You will need a functioning Revel installation for BaseApp to work.

Installing BaseApp

To get BaseApp, run

go get github.com/richtr/baseapp/...

This command does a couple things:

  • Go uses git to clone the repository into $GOPATH/src/github.com/richtr/baseapp/
  • Go transitively finds all of the dependencies and runs go get on them as well.

Configuring BaseApp

Before 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 with

cp $GOPATH/src/github.com/richtr/baseapp/conf/app.conf.default $GOPATH/src/github.com/richtr/baseapp/conf/app.conf

Note: It is highly recommended that you review the configuration options available in app.conf.default before you run your project for the first time!

You can customize the configuration of your BaseApp application either directly in your app.conf or via environment variables (see Running BaseApp below for instructions on running BaseApp with environment variable overrides).

Configuration NameEnvironment Variable NameDescription
-BASEAPP_RUN_LEVELThe run level of your application.
app.nameBASEAPP_APPLICATION_NAMEThe name of your application.

default: "BaseApp"
http.hostBASEAPP_SERVER_HOSTThe fully qualified address for your application.

default: "http://localhost:9000"
http.portBASEAPP_SERVER_PORTThe port on which to expose your application.

default: 9000
http.sslBASEAPP_SERVER_SSLFlag to indicate that BaseApp should be served over HTTPS

default: false
http.sslcertBASEAPP_SERVER_SSLCERTYour SSL certificate as a string

default: ``
http.sslkeyBASEAPP_SERVER_SSLKEYYour SSL private key as a string

default: ``
db.driverBASEAPP_DATABASE_DRIVERThe Go driver name for your database.
db.importBASEAPP_DATABASE_IMPORTThe Go driver library for your database
db.specBASEAPP_DATABASE_SPECThe Go driver connection string for your database
mailer.serverBASEAPP_MAILER_SERVERSMTP server address
mailer.portBASEAPP_MAILER_PORTSMTP server port
mailer.usernameBASEAPP_MAILER_USERNAMESMTP server user name
mailer.passwordBASEAPP_MAILER_PASSWORDSMTP server password
mailer.fromaddressBASEAPP_MAILER_FROMADDRESSThe email address to include as the sender address

Running BaseApp

Once you have set up an app.conf file you can start BaseApp in test mode, with

revel run github.com/richtr/baseapp test

If you have set up BaseApp environment variable overrides you should start BaseApp with the included start.sh script instead:

./start.sh

Point 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.

BaseApp Run Modes

BaseApp can be run in three different modes that are each useful for different stages of application development:

  1. test mode: Uses an in-memory sqlite3 datastore that is created and populated with basic data which is always wiped when your application ends.

    You can run BaseApp in test mode as follows:

     $> revel run github.com/richtr/baseapp test 9000
    

    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.

    To run the BaseApp test suite in non-interactive mode you can use:

     $> revel test github.com/richtr/baseapp test 9000
    

    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.

  2. 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.

    You can run BaseApp in dev mode as follows:

     $> revel run github.com/richtr/baseapp dev 9000
    

    Or, simply:

     $> revel run github.com/richtr/baseapp
    
  3. 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.

    You can run BaseApp in prod mode as follows:

     $> revel run github.com/richtr/baseapp prod 9000
    

Note: Both dev and prod modes require a configured backend DB. See app.conf.default. The test mode creates an in-memory database representation that dies when the app dies.

Docker Usage

This project comes with its own Dockerfile for building your own LXC container via Docker to host BaseApp.

You will need a functioning Docker installation to build and use BaseApp as an LXC container.

To build your own BaseApp LXC container via Docker is easy:

$ git clone https://github.com/richtr/baseapp.git
$ cd baseapp
$ docker build -t="richtr/baseapp" .

To spawn a new instance of BaseApp:

$ docker run -p 9000:9000 -d richtr/baseapp

Then you can the visit the following URL in a browser on your host machine to get started:

http://127.0.0.1:9000

Docker Compose

An example docker-compose configuration is provided with this repo. To build and run the infrastructure defined in the docker-compose file, run the following:

$ docker-compose up

It 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.

See the Configuring BaseApp section above for available docker compose environment variable overrides.

Feedback

If you find any bugs or issues please report them on the BaseApp Issue Tracker.

If you would like to contribute to this project please consider forking this repo, making your changes and then creating a new Pull Request back to the main code repository.

License

MIT. Copyright (c) Rich Tibbett.

See the LICENSE file.

About

Bootstrap-based web application scaffolding built in Go on top of the Revel Web Framework w/ Docker build support

Topics

Resources

Stars

92 stars

Watchers

5 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - richtr/baseapp: Bootstrap-based web application scaffolding built in Go on top of the Revel Web Framework w/ Docker build support · GitHub
Skip to content

Repository files navigation

BaseApp

A Bootstrap-based web application built in Go on top of the Revel Web Framework

BaseApp is a web application that provides web application scaffolding with the following features out of the box:

  • Basic pages (Home, About Us, Contact Us, etc)
  • Account registration (including password strength meter and safe storage of passwords with bcrypt)
  • Account confirmation via email (via configurable e-mail settings)
  • Account recovery via email (via configurable e-mail settings)
  • Account log in (by username or email address)
  • Public user profiles (with Gravatar integration for profile photos and profile edit functionality)
  • Public user posts (with full Markdown support and edit + delete functionality)
  • Social Features (Profile Follower and Following Counts and Post Likes)
  • People finder search (by username or full name)
  • Auto-provisioned backend data store (SQLite3, MySQL, PostgreSQL)
  • Full live client-side and static server-side form validation
  • Full non-interactive and interactive testing framework (Test-driven development process)
  • Responsive front-end design with Bootstrap (looks good on mobile, tablet and desktop screen sizes)

Contents

Screenshots

Example Home Page:

User Registration Form:

User Registration Form - Form Validation Failed:

User Login Form:

Display User Profile:

Followers Display:

Following Display:

Edit User Profile Form:

New Post Form:

Post Display:

User Search:

Reset Password Form (if email settings are provided in conf/app.conf):

Interactive Test Suite (at http://localhost:9000/@tests)

Quick Start

Prerequisites

You will need a functioning Revel installation for BaseApp to work.

Installing BaseApp

To get BaseApp, run

go get github.com/richtr/baseapp/...

This command does a couple things:

  • Go uses git to clone the repository into $GOPATH/src/github.com/richtr/baseapp/
  • Go transitively finds all of the dependencies and runs go get on them as well.

Configuring BaseApp

Before 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 with

cp $GOPATH/src/github.com/richtr/baseapp/conf/app.conf.default $GOPATH/src/github.com/richtr/baseapp/conf/app.conf

Note: It is highly recommended that you review the configuration options available in app.conf.default before you run your project for the first time!

You can customize the configuration of your BaseApp application either directly in your app.conf or via environment variables (see Running BaseApp below for instructions on running BaseApp with environment variable overrides).

Configuration NameEnvironment Variable NameDescription
-BASEAPP_RUN_LEVELThe run level of your application.
app.nameBASEAPP_APPLICATION_NAMEThe name of your application.

default: "BaseApp"
http.hostBASEAPP_SERVER_HOSTThe fully qualified address for your application.

default: "http://localhost:9000"
http.portBASEAPP_SERVER_PORTThe port on which to expose your application.

default: 9000
http.sslBASEAPP_SERVER_SSLFlag to indicate that BaseApp should be served over HTTPS

default: false
http.sslcertBASEAPP_SERVER_SSLCERTYour SSL certificate as a string

default: ``
http.sslkeyBASEAPP_SERVER_SSLKEYYour SSL private key as a string

default: ``
db.driverBASEAPP_DATABASE_DRIVERThe Go driver name for your database.
db.importBASEAPP_DATABASE_IMPORTThe Go driver library for your database
db.specBASEAPP_DATABASE_SPECThe Go driver connection string for your database
mailer.serverBASEAPP_MAILER_SERVERSMTP server address
mailer.portBASEAPP_MAILER_PORTSMTP server port
mailer.usernameBASEAPP_MAILER_USERNAMESMTP server user name
mailer.passwordBASEAPP_MAILER_PASSWORDSMTP server password
mailer.fromaddressBASEAPP_MAILER_FROMADDRESSThe email address to include as the sender address

Running BaseApp

Once you have set up an app.conf file you can start BaseApp in test mode, with

revel run github.com/richtr/baseapp test

If you have set up BaseApp environment variable overrides you should start BaseApp with the included start.sh script instead:

./start.sh

Point 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.

BaseApp Run Modes

BaseApp can be run in three different modes that are each useful for different stages of application development:

  1. test mode: Uses an in-memory sqlite3 datastore that is created and populated with basic data which is always wiped when your application ends.

    You can run BaseApp in test mode as follows:

     $> revel run github.com/richtr/baseapp test 9000
    

    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.

    To run the BaseApp test suite in non-interactive mode you can use:

     $> revel test github.com/richtr/baseapp test 9000
    

    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.

  2. 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.

    You can run BaseApp in dev mode as follows:

     $> revel run github.com/richtr/baseapp dev 9000
    

    Or, simply:

     $> revel run github.com/richtr/baseapp
    
  3. 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.

    You can run BaseApp in prod mode as follows:

     $> revel run github.com/richtr/baseapp prod 9000
    

Note: Both dev and prod modes require a configured backend DB. See app.conf.default. The test mode creates an in-memory database representation that dies when the app dies.

Docker Usage

This project comes with its own Dockerfile for building your own LXC container via Docker to host BaseApp.

You will need a functioning Docker installation to build and use BaseApp as an LXC container.

To build your own BaseApp LXC container via Docker is easy:

$ git clone https://github.com/richtr/baseapp.git
$ cd baseapp
$ docker build -t="richtr/baseapp" .

To spawn a new instance of BaseApp:

$ docker run -p 9000:9000 -d richtr/baseapp

Then you can the visit the following URL in a browser on your host machine to get started:

http://127.0.0.1:9000

Docker Compose

An example docker-compose configuration is provided with this repo. To build and run the infrastructure defined in the docker-compose file, run the following:

$ docker-compose up

It 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.

See the Configuring BaseApp section above for available docker compose environment variable overrides.

Feedback

If you find any bugs or issues please report them on the BaseApp Issue Tracker.

If you would like to contribute to this project please consider forking this repo, making your changes and then creating a new Pull Request back to the main code repository.

License

MIT. Copyright (c) Rich Tibbett.

See the LICENSE file.

About

Bootstrap-based web application scaffolding built in Go on top of the Revel Web Framework w/ Docker build support

Topics

Resources

Stars

92 stars

Watchers

5 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' GitHub - richtr/baseapp: Bootstrap-based web application scaffolding built in Go on top of the Revel Web Framework w/ Docker build support · GitHub
Skip to content

Repository files navigation

BaseApp

A Bootstrap-based web application built in Go on top of the Revel Web Framework

BaseApp is a web application that provides web application scaffolding with the following features out of the box:

  • Basic pages (Home, About Us, Contact Us, etc)
  • Account registration (including password strength meter and safe storage of passwords with bcrypt)
  • Account confirmation via email (via configurable e-mail settings)
  • Account recovery via email (via configurable e-mail settings)
  • Account log in (by username or email address)
  • Public user profiles (with Gravatar integration for profile photos and profile edit functionality)
  • Public user posts (with full Markdown support and edit + delete functionality)
  • Social Features (Profile Follower and Following Counts and Post Likes)
  • People finder search (by username or full name)
  • Auto-provisioned backend data store (SQLite3, MySQL, PostgreSQL)
  • Full live client-side and static server-side form validation
  • Full non-interactive and interactive testing framework (Test-driven development process)
  • Responsive front-end design with Bootstrap (looks good on mobile, tablet and desktop screen sizes)

Contents

Screenshots

Example Home Page:

User Registration Form:

User Registration Form - Form Validation Failed:

User Login Form:

Display User Profile:

Followers Display:

Following Display:

Edit User Profile Form:

New Post Form:

Post Display:

User Search:

Reset Password Form (if email settings are provided in conf/app.conf):

Interactive Test Suite (at http://localhost:9000/@tests)

Quick Start

Prerequisites

You will need a functioning Revel installation for BaseApp to work.

Installing BaseApp

To get BaseApp, run

go get github.com/richtr/baseapp/...

This command does a couple things:

  • Go uses git to clone the repository into $GOPATH/src/github.com/richtr/baseapp/
  • Go transitively finds all of the dependencies and runs go get on them as well.

Configuring BaseApp

Before 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 with

cp $GOPATH/src/github.com/richtr/baseapp/conf/app.conf.default $GOPATH/src/github.com/richtr/baseapp/conf/app.conf

Note: It is highly recommended that you review the configuration options available in app.conf.default before you run your project for the first time!

You can customize the configuration of your BaseApp application either directly in your app.conf or via environment variables (see Running BaseApp below for instructions on running BaseApp with environment variable overrides).

Configuration NameEnvironment Variable NameDescription
-BASEAPP_RUN_LEVELThe run level of your application.
app.nameBASEAPP_APPLICATION_NAMEThe name of your application.

default: "BaseApp"
http.hostBASEAPP_SERVER_HOSTThe fully qualified address for your application.

default: "http://localhost:9000"
http.portBASEAPP_SERVER_PORTThe port on which to expose your application.

default: 9000
http.sslBASEAPP_SERVER_SSLFlag to indicate that BaseApp should be served over HTTPS

default: false
http.sslcertBASEAPP_SERVER_SSLCERTYour SSL certificate as a string

default: ``
http.sslkeyBASEAPP_SERVER_SSLKEYYour SSL private key as a string

default: ``
db.driverBASEAPP_DATABASE_DRIVERThe Go driver name for your database.
db.importBASEAPP_DATABASE_IMPORTThe Go driver library for your database
db.specBASEAPP_DATABASE_SPECThe Go driver connection string for your database
mailer.serverBASEAPP_MAILER_SERVERSMTP server address
mailer.portBASEAPP_MAILER_PORTSMTP server port
mailer.usernameBASEAPP_MAILER_USERNAMESMTP server user name
mailer.passwordBASEAPP_MAILER_PASSWORDSMTP server password
mailer.fromaddressBASEAPP_MAILER_FROMADDRESSThe email address to include as the sender address

Running BaseApp

Once you have set up an app.conf file you can start BaseApp in test mode, with

revel run github.com/richtr/baseapp test

If you have set up BaseApp environment variable overrides you should start BaseApp with the included start.sh script instead:

./start.sh

Point 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.

BaseApp Run Modes

BaseApp can be run in three different modes that are each useful for different stages of application development:

  1. test mode: Uses an in-memory sqlite3 datastore that is created and populated with basic data which is always wiped when your application ends.

    You can run BaseApp in test mode as follows:

     $> revel run github.com/richtr/baseapp test 9000
    

    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.

    To run the BaseApp test suite in non-interactive mode you can use:

     $> revel test github.com/richtr/baseapp test 9000
    

    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.

  2. 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.

    You can run BaseApp in dev mode as follows:

     $> revel run github.com/richtr/baseapp dev 9000
    

    Or, simply:

     $> revel run github.com/richtr/baseapp
    
  3. 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.

    You can run BaseApp in prod mode as follows:

     $> revel run github.com/richtr/baseapp prod 9000
    

Note: Both dev and prod modes require a configured backend DB. See app.conf.default. The test mode creates an in-memory database representation that dies when the app dies.

Docker Usage

This project comes with its own Dockerfile for building your own LXC container via Docker to host BaseApp.

You will need a functioning Docker installation to build and use BaseApp as an LXC container.

To build your own BaseApp LXC container via Docker is easy:

$ git clone https://github.com/richtr/baseapp.git
$ cd baseapp
$ docker build -t="richtr/baseapp" .

To spawn a new instance of BaseApp:

$ docker run -p 9000:9000 -d richtr/baseapp

Then you can the visit the following URL in a browser on your host machine to get started:

http://127.0.0.1:9000

Docker Compose

An example docker-compose configuration is provided with this repo. To build and run the infrastructure defined in the docker-compose file, run the following:

$ docker-compose up

It 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.

See the Configuring BaseApp section above for available docker compose environment variable overrides.

Feedback

If you find any bugs or issues please report them on the BaseApp Issue Tracker.

If you would like to contribute to this project please consider forking this repo, making your changes and then creating a new Pull Request back to the main code repository.

License

MIT. Copyright (c) Rich Tibbett.

See the LICENSE file.

About

Bootstrap-based web application scaffolding built in Go on top of the Revel Web Framework w/ Docker build support

Topics

Resources

Stars

92 stars

Watchers

5 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - richtr/baseapp: Bootstrap-based web application scaffolding built in Go on top of the Revel Web Framework w/ Docker build support · GitHub
Skip to content

Repository files navigation

BaseApp

A Bootstrap-based web application built in Go on top of the Revel Web Framework

BaseApp is a web application that provides web application scaffolding with the following features out of the box:

  • Basic pages (Home, About Us, Contact Us, etc)
  • Account registration (including password strength meter and safe storage of passwords with bcrypt)
  • Account confirmation via email (via configurable e-mail settings)
  • Account recovery via email (via configurable e-mail settings)
  • Account log in (by username or email address)
  • Public user profiles (with Gravatar integration for profile photos and profile edit functionality)
  • Public user posts (with full Markdown support and edit + delete functionality)
  • Social Features (Profile Follower and Following Counts and Post Likes)
  • People finder search (by username or full name)
  • Auto-provisioned backend data store (SQLite3, MySQL, PostgreSQL)
  • Full live client-side and static server-side form validation
  • Full non-interactive and interactive testing framework (Test-driven development process)
  • Responsive front-end design with Bootstrap (looks good on mobile, tablet and desktop screen sizes)

Contents

Screenshots

Example Home Page:

User Registration Form:

User Registration Form - Form Validation Failed:

User Login Form:

Display User Profile:

Followers Display:

Following Display:

Edit User Profile Form:

New Post Form:

Post Display:

User Search:

Reset Password Form (if email settings are provided in conf/app.conf):

Interactive Test Suite (at http://localhost:9000/@tests)

Quick Start

Prerequisites

You will need a functioning Revel installation for BaseApp to work.

Installing BaseApp

To get BaseApp, run

go get github.com/richtr/baseapp/...

This command does a couple things:

  • Go uses git to clone the repository into $GOPATH/src/github.com/richtr/baseapp/
  • Go transitively finds all of the dependencies and runs go get on them as well.

Configuring BaseApp

Before 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 with

cp $GOPATH/src/github.com/richtr/baseapp/conf/app.conf.default $GOPATH/src/github.com/richtr/baseapp/conf/app.conf

Note: It is highly recommended that you review the configuration options available in app.conf.default before you run your project for the first time!

You can customize the configuration of your BaseApp application either directly in your app.conf or via environment variables (see Running BaseApp below for instructions on running BaseApp with environment variable overrides).

Configuration NameEnvironment Variable NameDescription
-BASEAPP_RUN_LEVELThe run level of your application.
app.nameBASEAPP_APPLICATION_NAMEThe name of your application.

default: "BaseApp"
http.hostBASEAPP_SERVER_HOSTThe fully qualified address for your application.

default: "http://localhost:9000"
http.portBASEAPP_SERVER_PORTThe port on which to expose your application.

default: 9000
http.sslBASEAPP_SERVER_SSLFlag to indicate that BaseApp should be served over HTTPS

default: false
http.sslcertBASEAPP_SERVER_SSLCERTYour SSL certificate as a string

default: ``
http.sslkeyBASEAPP_SERVER_SSLKEYYour SSL private key as a string

default: ``
db.driverBASEAPP_DATABASE_DRIVERThe Go driver name for your database.
db.importBASEAPP_DATABASE_IMPORTThe Go driver library for your database
db.specBASEAPP_DATABASE_SPECThe Go driver connection string for your database
mailer.serverBASEAPP_MAILER_SERVERSMTP server address
mailer.portBASEAPP_MAILER_PORTSMTP server port
mailer.usernameBASEAPP_MAILER_USERNAMESMTP server user name
mailer.passwordBASEAPP_MAILER_PASSWORDSMTP server password
mailer.fromaddressBASEAPP_MAILER_FROMADDRESSThe email address to include as the sender address

Running BaseApp

Once you have set up an app.conf file you can start BaseApp in test mode, with

revel run github.com/richtr/baseapp test

If you have set up BaseApp environment variable overrides you should start BaseApp with the included start.sh script instead:

./start.sh

Point 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.

BaseApp Run Modes

BaseApp can be run in three different modes that are each useful for different stages of application development:

  1. test mode: Uses an in-memory sqlite3 datastore that is created and populated with basic data which is always wiped when your application ends.

    You can run BaseApp in test mode as follows:

     $> revel run github.com/richtr/baseapp test 9000
    

    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.

    To run the BaseApp test suite in non-interactive mode you can use:

     $> revel test github.com/richtr/baseapp test 9000
    

    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.

  2. 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.

    You can run BaseApp in dev mode as follows:

     $> revel run github.com/richtr/baseapp dev 9000
    

    Or, simply:

     $> revel run github.com/richtr/baseapp
    
  3. 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.

    You can run BaseApp in prod mode as follows:

     $> revel run github.com/richtr/baseapp prod 9000
    

Note: Both dev and prod modes require a configured backend DB. See app.conf.default. The test mode creates an in-memory database representation that dies when the app dies.

Docker Usage

This project comes with its own Dockerfile for building your own LXC container via Docker to host BaseApp.

You will need a functioning Docker installation to build and use BaseApp as an LXC container.

To build your own BaseApp LXC container via Docker is easy:

$ git clone https://github.com/richtr/baseapp.git
$ cd baseapp
$ docker build -t="richtr/baseapp" .

To spawn a new instance of BaseApp:

$ docker run -p 9000:9000 -d richtr/baseapp

Then you can the visit the following URL in a browser on your host machine to get started:

http://127.0.0.1:9000

Docker Compose

An example docker-compose configuration is provided with this repo. To build and run the infrastructure defined in the docker-compose file, run the following:

$ docker-compose up

It 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.

See the Configuring BaseApp section above for available docker compose environment variable overrides.

Feedback

If you find any bugs or issues please report them on the BaseApp Issue Tracker.

If you would like to contribute to this project please consider forking this repo, making your changes and then creating a new Pull Request back to the main code repository.

License

MIT. Copyright (c) Rich Tibbett.

See the LICENSE file.

About

Bootstrap-based web application scaffolding built in Go on top of the Revel Web Framework w/ Docker build support

Topics

Resources

Stars

92 stars

Watchers

5 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - richtr/baseapp: Bootstrap-based web application scaffolding built in Go on top of the Revel Web Framework w/ Docker build support · GitHub
Skip to content

Repository files navigation

BaseApp

A Bootstrap-based web application built in Go on top of the Revel Web Framework

BaseApp is a web application that provides web application scaffolding with the following features out of the box:

  • Basic pages (Home, About Us, Contact Us, etc)
  • Account registration (including password strength meter and safe storage of passwords with bcrypt)
  • Account confirmation via email (via configurable e-mail settings)
  • Account recovery via email (via configurable e-mail settings)
  • Account log in (by username or email address)
  • Public user profiles (with Gravatar integration for profile photos and profile edit functionality)
  • Public user posts (with full Markdown support and edit + delete functionality)
  • Social Features (Profile Follower and Following Counts and Post Likes)
  • People finder search (by username or full name)
  • Auto-provisioned backend data store (SQLite3, MySQL, PostgreSQL)
  • Full live client-side and static server-side form validation
  • Full non-interactive and interactive testing framework (Test-driven development process)
  • Responsive front-end design with Bootstrap (looks good on mobile, tablet and desktop screen sizes)

Contents

Screenshots

Example Home Page:

User Registration Form:

User Registration Form - Form Validation Failed:

User Login Form:

Display User Profile:

Followers Display:

Following Display:

Edit User Profile Form:

New Post Form:

Post Display:

User Search:

Reset Password Form (if email settings are provided in conf/app.conf):

Interactive Test Suite (at http://localhost:9000/@tests)

Quick Start

Prerequisites

You will need a functioning Revel installation for BaseApp to work.

Installing BaseApp

To get BaseApp, run

go get github.com/richtr/baseapp/...

This command does a couple things:

  • Go uses git to clone the repository into $GOPATH/src/github.com/richtr/baseapp/
  • Go transitively finds all of the dependencies and runs go get on them as well.

Configuring BaseApp

Before 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 with

cp $GOPATH/src/github.com/richtr/baseapp/conf/app.conf.default $GOPATH/src/github.com/richtr/baseapp/conf/app.conf

Note: It is highly recommended that you review the configuration options available in app.conf.default before you run your project for the first time!

You can customize the configuration of your BaseApp application either directly in your app.conf or via environment variables (see Running BaseApp below for instructions on running BaseApp with environment variable overrides).

Configuration NameEnvironment Variable NameDescription
-BASEAPP_RUN_LEVELThe run level of your application.
app.nameBASEAPP_APPLICATION_NAMEThe name of your application.

default: "BaseApp"
http.hostBASEAPP_SERVER_HOSTThe fully qualified address for your application.

default: "http://localhost:9000"
http.portBASEAPP_SERVER_PORTThe port on which to expose your application.

default: 9000
http.sslBASEAPP_SERVER_SSLFlag to indicate that BaseApp should be served over HTTPS

default: false
http.sslcertBASEAPP_SERVER_SSLCERTYour SSL certificate as a string

default: ``
http.sslkeyBASEAPP_SERVER_SSLKEYYour SSL private key as a string

default: ``
db.driverBASEAPP_DATABASE_DRIVERThe Go driver name for your database.
db.importBASEAPP_DATABASE_IMPORTThe Go driver library for your database
db.specBASEAPP_DATABASE_SPECThe Go driver connection string for your database
mailer.serverBASEAPP_MAILER_SERVERSMTP server address
mailer.portBASEAPP_MAILER_PORTSMTP server port
mailer.usernameBASEAPP_MAILER_USERNAMESMTP server user name
mailer.passwordBASEAPP_MAILER_PASSWORDSMTP server password
mailer.fromaddressBASEAPP_MAILER_FROMADDRESSThe email address to include as the sender address

Running BaseApp

Once you have set up an app.conf file you can start BaseApp in test mode, with

revel run github.com/richtr/baseapp test

If you have set up BaseApp environment variable overrides you should start BaseApp with the included start.sh script instead:

./start.sh

Point 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.

BaseApp Run Modes

BaseApp can be run in three different modes that are each useful for different stages of application development:

  1. test mode: Uses an in-memory sqlite3 datastore that is created and populated with basic data which is always wiped when your application ends.

    You can run BaseApp in test mode as follows:

     $> revel run github.com/richtr/baseapp test 9000
    

    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.

    To run the BaseApp test suite in non-interactive mode you can use:

     $> revel test github.com/richtr/baseapp test 9000
    

    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.

  2. 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.

    You can run BaseApp in dev mode as follows:

     $> revel run github.com/richtr/baseapp dev 9000
    

    Or, simply:

     $> revel run github.com/richtr/baseapp
    
  3. 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.

    You can run BaseApp in prod mode as follows:

     $> revel run github.com/richtr/baseapp prod 9000
    

Note: Both dev and prod modes require a configured backend DB. See app.conf.default. The test mode creates an in-memory database representation that dies when the app dies.

Docker Usage

This project comes with its own Dockerfile for building your own LXC container via Docker to host BaseApp.

You will need a functioning Docker installation to build and use BaseApp as an LXC container.

To build your own BaseApp LXC container via Docker is easy:

$ git clone https://github.com/richtr/baseapp.git
$ cd baseapp
$ docker build -t="richtr/baseapp" .

To spawn a new instance of BaseApp:

$ docker run -p 9000:9000 -d richtr/baseapp

Then you can the visit the following URL in a browser on your host machine to get started:

http://127.0.0.1:9000

Docker Compose

An example docker-compose configuration is provided with this repo. To build and run the infrastructure defined in the docker-compose file, run the following:

$ docker-compose up

It 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.

See the Configuring BaseApp section above for available docker compose environment variable overrides.

Feedback

If you find any bugs or issues please report them on the BaseApp Issue Tracker.

If you would like to contribute to this project please consider forking this repo, making your changes and then creating a new Pull Request back to the main code repository.

License

MIT. Copyright (c) Rich Tibbett.

See the LICENSE file.

About

Bootstrap-based web application scaffolding built in Go on top of the Revel Web Framework w/ Docker build support

Topics

Resources

Stars

92 stars

Watchers

5 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); GitHub - richtr/baseapp: Bootstrap-based web application scaffolding built in Go on top of the Revel Web Framework w/ Docker build support · GitHub
Skip to content

Repository files navigation

BaseApp

A Bootstrap-based web application built in Go on top of the Revel Web Framework

BaseApp is a web application that provides web application scaffolding with the following features out of the box:

  • Basic pages (Home, About Us, Contact Us, etc)
  • Account registration (including password strength meter and safe storage of passwords with bcrypt)
  • Account confirmation via email (via configurable e-mail settings)
  • Account recovery via email (via configurable e-mail settings)
  • Account log in (by username or email address)
  • Public user profiles (with Gravatar integration for profile photos and profile edit functionality)
  • Public user posts (with full Markdown support and edit + delete functionality)
  • Social Features (Profile Follower and Following Counts and Post Likes)
  • People finder search (by username or full name)
  • Auto-provisioned backend data store (SQLite3, MySQL, PostgreSQL)
  • Full live client-side and static server-side form validation
  • Full non-interactive and interactive testing framework (Test-driven development process)
  • Responsive front-end design with Bootstrap (looks good on mobile, tablet and desktop screen sizes)

Contents

Screenshots

Example Home Page:

User Registration Form:

User Registration Form - Form Validation Failed:

User Login Form:

Display User Profile:

Followers Display:

Following Display:

Edit User Profile Form:

New Post Form:

Post Display:

User Search:

Reset Password Form (if email settings are provided in conf/app.conf):

Interactive Test Suite (at http://localhost:9000/@tests)

Quick Start

Prerequisites

You will need a functioning Revel installation for BaseApp to work.

Installing BaseApp

To get BaseApp, run

go get github.com/richtr/baseapp/...

This command does a couple things:

  • Go uses git to clone the repository into $GOPATH/src/github.com/richtr/baseapp/
  • Go transitively finds all of the dependencies and runs go get on them as well.

Configuring BaseApp

Before 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 with

cp $GOPATH/src/github.com/richtr/baseapp/conf/app.conf.default $GOPATH/src/github.com/richtr/baseapp/conf/app.conf

Note: It is highly recommended that you review the configuration options available in app.conf.default before you run your project for the first time!

You can customize the configuration of your BaseApp application either directly in your app.conf or via environment variables (see Running BaseApp below for instructions on running BaseApp with environment variable overrides).

Configuration NameEnvironment Variable NameDescription
-BASEAPP_RUN_LEVELThe run level of your application.
app.nameBASEAPP_APPLICATION_NAMEThe name of your application.

default: "BaseApp"
http.hostBASEAPP_SERVER_HOSTThe fully qualified address for your application.

default: "http://localhost:9000"
http.portBASEAPP_SERVER_PORTThe port on which to expose your application.

default: 9000
http.sslBASEAPP_SERVER_SSLFlag to indicate that BaseApp should be served over HTTPS

default: false
http.sslcertBASEAPP_SERVER_SSLCERTYour SSL certificate as a string

default: ``
http.sslkeyBASEAPP_SERVER_SSLKEYYour SSL private key as a string

default: ``
db.driverBASEAPP_DATABASE_DRIVERThe Go driver name for your database.
db.importBASEAPP_DATABASE_IMPORTThe Go driver library for your database
db.specBASEAPP_DATABASE_SPECThe Go driver connection string for your database
mailer.serverBASEAPP_MAILER_SERVERSMTP server address
mailer.portBASEAPP_MAILER_PORTSMTP server port
mailer.usernameBASEAPP_MAILER_USERNAMESMTP server user name
mailer.passwordBASEAPP_MAILER_PASSWORDSMTP server password
mailer.fromaddressBASEAPP_MAILER_FROMADDRESSThe email address to include as the sender address

Running BaseApp

Once you have set up an app.conf file you can start BaseApp in test mode, with

revel run github.com/richtr/baseapp test

If you have set up BaseApp environment variable overrides you should start BaseApp with the included start.sh script instead:

./start.sh

Point 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.

BaseApp Run Modes

BaseApp can be run in three different modes that are each useful for different stages of application development:

  1. test mode: Uses an in-memory sqlite3 datastore that is created and populated with basic data which is always wiped when your application ends.

    You can run BaseApp in test mode as follows:

     $> revel run github.com/richtr/baseapp test 9000
    

    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.

    To run the BaseApp test suite in non-interactive mode you can use:

     $> revel test github.com/richtr/baseapp test 9000
    

    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.

  2. 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.

    You can run BaseApp in dev mode as follows:

     $> revel run github.com/richtr/baseapp dev 9000
    

    Or, simply:

     $> revel run github.com/richtr/baseapp
    
  3. 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.

    You can run BaseApp in prod mode as follows:

     $> revel run github.com/richtr/baseapp prod 9000
    

Note: Both dev and prod modes require a configured backend DB. See app.conf.default. The test mode creates an in-memory database representation that dies when the app dies.

Docker Usage

This project comes with its own Dockerfile for building your own LXC container via Docker to host BaseApp.

You will need a functioning Docker installation to build and use BaseApp as an LXC container.

To build your own BaseApp LXC container via Docker is easy:

$ git clone https://github.com/richtr/baseapp.git
$ cd baseapp
$ docker build -t="richtr/baseapp" .

To spawn a new instance of BaseApp:

$ docker run -p 9000:9000 -d richtr/baseapp

Then you can the visit the following URL in a browser on your host machine to get started:

http://127.0.0.1:9000

Docker Compose

An example docker-compose configuration is provided with this repo. To build and run the infrastructure defined in the docker-compose file, run the following:

$ docker-compose up

It 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.

See the Configuring BaseApp section above for available docker compose environment variable overrides.

Feedback

If you find any bugs or issues please report them on the BaseApp Issue Tracker.

If you would like to contribute to this project please consider forking this repo, making your changes and then creating a new Pull Request back to the main code repository.

License

MIT. Copyright (c) Rich Tibbett.

See the LICENSE file.

About

Bootstrap-based web application scaffolding built in Go on top of the Revel Web Framework w/ Docker build support

Topics

Resources

Stars

92 stars

Watchers

5 watching

Forks

Releases

Packages

Contributors

Languages