GithubHelp home page GithubHelp logo

fileset's Introduction

Grow.dev

PyPi GitHub Actions Downloads Code Coverage

Grow is a declarative tool for rapidly building, launching, and maintaining high-quality static HTML.

  • Easy installation
  • Jinja template engine
  • Content managed in YAML and JSON files
  • Data-binding between content and templates
  • Configuration-based site architecture
  • Easy URL changes
  • Flexible internationalization and translation
  • Integration with external CMSes
  • Integration with Google Sheets
  • Fast builds

Quick start

One time only: install Pipenv and libyaml.

# On Mac with Homebrew (https://brew.sh/).
brew install pipenv libyaml

# On Ubuntu.
sudo apt install -y pipenv libyaml-dev

# On other distributions.
sudo apt install python-pip; pip install pipenv

Next: install and run Grow using a starter.

git clone https://github.com/grow/starter
cd starter
pipenv install
pipenv run grow install
pipenv run grow run

Documentation

Visit https://grow.dev to read the documentation.

fileset's People

Contributors

jeremydw avatar stevenle avatar

Watchers

 avatar  avatar

fileset's Issues

[FEATURE] Experiments framework

Some quick thoughts about an experiment framework:

  • Files stored as:
    • default: /{path}/{filename}.html
    • experiment: /{path}/{filename}.{experiment}.html
  • Experiments enabled/disabled (by % of users) using a UI
  • Experiments can span multiple files
  • Once a user is segmented into an experiment, all subsequent requests from that user should return files for that experiment
  • Admins can enable/disable experiments using a query param, e.g. ?e={experiment} to enable ?e=-{experiment} to disable. ?e=Experiment1,Experiment2 to enable multiple experiments.
  • Admins can view their enabled flags using a URL (I forget what's standard, but maybe something like /_fs/flagz)

Some things to figure out:

  • How would we handle multiple experiments on a single file?
  • Should we enable some basic server-side rendering logic, e.g. [[ if Experiment1 ]] show this [[ /if ]]?

Support for GAE services

Major site redesigns sometimes use separate GAE services for code separation / isolation, which services at URL format <service>-dot-<appid>.appspot.com.

  • Branches need to be aware that they are serving inside of a service.
  • Datastore should isolate data between different services.

[FEATURE] Python 3 support

The server-side code needs to be compatible with Python 2 and 3 without any extra work from the developer.

Support for multiple domains on the same app

Should be able to map multiple domains to the same fileset server, serving different manifest files.

Deployment config in grow would be something like:

deployments:
  # deploys to example.com and all other domains
  default_domain:
    destination: fileset
    branch: auto  # Uses the git branch name.
    server: appid.appspot.com
    env:
      name: prod
      host: example.com
      scheme: https
  # deploys to foo.example.com
  subdomain_foo:
    destination: fileset
    branch: auto  # Uses the git branch name.
    server: appid.appspot.com
    domain: foo.example.com
    env:
      name: prod
      host: foo.example.com
      scheme: https
  # deploys to bar.example.com
  subdomain_bar:
    destination: fileset
    branch: auto  # Uses the git branch name.
    server: appid.appspot.com
    domain: bar.example.com
    env:
      name: prod
      host: bar.example.com
      scheme: https

[FEATURE] Action logs

Fileset should record "actions" taken by user in a log-style format, and developers should be able to query those logs either through an admin UI or through bigquery or something similar.

Add country's official languages to intl fallback mechanism

For regionalized content that should be displayed for users in a given country, the current fallback system fails unless the user has one of the languages of that country listed in their browser's language preferences. The fallback mechanism should look for files that match the country's official languages in addition to the browser's language preferences.

The babel package would need to be included as a dependency. Projects would need to update their app.yaml file to add this dep to their app.

>>> from babel import languages
>>> languages.get_official_languages('fi')
(u'fi', u'sv')

[FEATURE] Preview future deployments in staging URL

Users should be able to visit a staging link and be able to preview future deployments. Should work on Env.STAGING domains only (aka .appspot.com), which already enforce authentication.

JS and CSS files loaded will need to also respect this query param, probably through the Referrer header.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.