Permalink
Browse files

Initial Phoenix Template App

  • Loading branch information...
michaeljbishop committed Oct 14, 2016
0 parents commit 31759198ac3bd2fcd1b7c41dd0dda6a73c1b3759
@@ -0,0 +1,24 @@
+# App artifacts
+/_build
+/db
+/deps
+/*.ez
+
+# Generated on crash by the VM
+erl_crash.dump
+
+# Static artifacts
+/node_modules
+
+# Since we are building assets from web/static,
+# we ignore priv/static. You may want to comment
+# this depending on your deployment strategy.
+/priv/static/
+
+# The config/prod.secret.exs file by default contains sensitive
+# data and you should not commit it into version control.
+#
+# Alternatively, you may comment the line below and commit the
+# secrets file as long as you replace its contents by environment
+# variables.
+/config/prod.secret.exs
@@ -0,0 +1,19 @@
+# Draw
+
+To start your Phoenix app:
+
+ * Install dependencies with `mix deps.get`
+ * Install Node.js dependencies with `npm install`
+ * Start Phoenix endpoint with `mix phoenix.server`
+
+Now you can visit [`localhost:4000`](http://localhost:4000) from your browser.
+
+Ready to run in production? Please [check our deployment guides](http://www.phoenixframework.org/docs/deployment).
+
+## Learn more
+
+ * Official website: http://www.phoenixframework.org/
+ * Guides: http://phoenixframework.org/docs/overview
+ * Docs: https://hexdocs.pm/phoenix
+ * Mailing list: http://groups.google.com/group/phoenix-talk
+ * Source: https://github.com/phoenixframework/phoenix
@@ -0,0 +1,69 @@
+exports.config = {
+ // See http://brunch.io/#documentation for docs.
+ files: {
+ javascripts: {
+ joinTo: "js/app.js"
+
+ // To use a separate vendor.js bundle, specify two files path
+ // http://brunch.io/docs/config#-files-
+ // joinTo: {
+ // "js/app.js": /^(web\/static\/js)/,
+ // "js/vendor.js": /^(web\/static\/vendor)|(deps)/
+ // }
+ //
+ // To change the order of concatenation of files, explicitly mention here
+ // order: {
+ // before: [
+ // "web/static/vendor/js/jquery-2.1.1.js",
+ // "web/static/vendor/js/bootstrap.min.js"
+ // ]
+ // }
+ },
+ stylesheets: {
+ joinTo: "css/app.css",
+ order: {
+ after: ["web/static/css/app.css"] // concat app.css last
+ }
+ },
+ templates: {
+ joinTo: "js/app.js"
+ }
+ },
+
+ conventions: {
+ // This option sets where we should place non-css and non-js assets in.
+ // By default, we set this to "/web/static/assets". Files in this directory
+ // will be copied to `paths.public`, which is "priv/static" by default.
+ assets: /^(web\/static\/assets)/
+ },
+
+ // Phoenix paths configuration
+ paths: {
+ // Dependencies and current project directories to watch
+ watched: [
+ "web/static",
+ "test/static"
+ ],
+
+ // Where to compile files to
+ public: "priv/static"
+ },
+
+ // Configure your plugins
+ plugins: {
+ babel: {
+ // Do not use ES6 compiler in vendor code
+ ignore: [/web\/static\/vendor/]
+ }
+ },
+
+ modules: {
+ autoRequire: {
+ "js/app.js": ["web/static/js/app"]
+ }
+ },
+
+ npm: {
+ enabled: true
+ }
+};
@@ -0,0 +1,23 @@
+# This file is responsible for configuring your application
+# and its dependencies with the aid of the Mix.Config module.
+#
+# This configuration file is loaded before any dependency and
+# is restricted to this project.
+use Mix.Config
+
+# Configures the endpoint
+config :draw, Draw.Endpoint,
+ url: [host: "localhost"],
+ secret_key_base: "/VXFdiexhG8HlCnXtuZhliQzp6vd3yXBxYOTjbn8QzmupvUt4suUXdnzPbMg7Tu9",
+ render_errors: [view: Draw.ErrorView, accepts: ~w(html json)],
+ pubsub: [name: Draw.PubSub,
+ adapter: Phoenix.PubSub.PG2]
+
+# Configures Elixir's Logger
+config :logger, :console,
+ format: "$time $metadata[$level] $message\n",
+ metadata: [:request_id]
+
+# Import environment specific config. This must remain at the bottom
+# of this file so it overrides the configuration defined above.
+import_config "#{Mix.env}.exs"
@@ -0,0 +1,34 @@
+use Mix.Config
+
+# For development, we disable any cache and enable
+# debugging and code reloading.
+#
+# The watchers configuration can be used to run external
+# watchers to your application. For example, we use it
+# with brunch.io to recompile .js and .css sources.
+config :draw, Draw.Endpoint,
+ http: [port: 4000],
+ debug_errors: true,
+ code_reloader: true,
+ check_origin: false,
+ watchers: [node: ["node_modules/brunch/bin/brunch", "watch", "--stdin",
+ cd: Path.expand("../", __DIR__)]]
+
+
+# Watch static and templates for browser reloading.
+config :draw, Draw.Endpoint,
+ live_reload: [
+ patterns: [
+ ~r{priv/static/.*(js|css|png|jpeg|jpg|gif|svg)$},
+ ~r{priv/gettext/.*(po)$},
+ ~r{web/views/.*(ex)$},
+ ~r{web/templates/.*(eex)$}
+ ]
+ ]
+
+# Do not include metadata nor timestamps in development logs
+config :logger, :console, format: "[$level] $message\n"
+
+# Set a higher stacktrace during development. Avoid configuring such
+# in production as building large stacktraces may be expensive.
+config :phoenix, :stacktrace_depth, 20
@@ -0,0 +1,61 @@
+use Mix.Config
+
+# For production, we configure the host to read the PORT
+# from the system environment. Therefore, you will need
+# to set PORT=80 before running your server.
+#
+# You should also configure the url host to something
+# meaningful, we use this information when generating URLs.
+#
+# Finally, we also include the path to a manifest
+# containing the digested version of static files. This
+# manifest is generated by the mix phoenix.digest task
+# which you typically run after static files are built.
+config :draw, Draw.Endpoint,
+ http: [port: {:system, "PORT"}],
+ url: [host: "example.com", port: 80],
+ cache_static_manifest: "priv/static/manifest.json"
+
+# Do not print debug messages in production
+config :logger, level: :info
+
+# ## SSL Support
+#
+# To get SSL working, you will need to add the `https` key
+# to the previous section and set your `:url` port to 443:
+#
+# config :draw, Draw.Endpoint,
+# ...
+# url: [host: "example.com", port: 443],
+# https: [port: 443,
+# keyfile: System.get_env("SOME_APP_SSL_KEY_PATH"),
+# certfile: System.get_env("SOME_APP_SSL_CERT_PATH")]
+#
+# Where those two env variables return an absolute path to
+# the key and cert in disk or a relative path inside priv,
+# for example "priv/ssl/server.key".
+#
+# We also recommend setting `force_ssl`, ensuring no data is
+# ever sent via http, always redirecting to https:
+#
+# config :draw, Draw.Endpoint,
+# force_ssl: [hsts: true]
+#
+# Check `Plug.SSL` for all available options in `force_ssl`.
+
+# ## Using releases
+#
+# If you are doing OTP releases, you need to instruct Phoenix
+# to start the server for all endpoints:
+#
+# config :phoenix, :serve_endpoints, true
+#
+# Alternatively, you can configure exactly which server to
+# start per endpoint:
+#
+# config :draw, Draw.Endpoint, server: true
+#
+
+# Finally import the config/prod.secret.exs
+# which should be versioned separately.
+import_config "prod.secret.exs"
@@ -0,0 +1,10 @@
+use Mix.Config
+
+# We don't run a server during test. If one is required,
+# you can enable the server option below.
+config :draw, Draw.Endpoint,
+ http: [port: 4001],
+ server: false
+
+# Print only warnings and errors during test
+config :logger, level: :warn
@@ -0,0 +1,29 @@
+defmodule Draw do
+ use Application
+
+ # See http://elixir-lang.org/docs/stable/elixir/Application.html
+ # for more information on OTP Applications
+ def start(_type, _args) do
+ import Supervisor.Spec
+
+ # Define workers and child supervisors to be supervised
+ children = [
+ # Start the endpoint when the application starts
+ supervisor(Draw.Endpoint, []),
+ # Start your own worker by calling: Draw.Worker.start_link(arg1, arg2, arg3)
+ # worker(Draw.Worker, [arg1, arg2, arg3]),
+ ]
+
+ # See http://elixir-lang.org/docs/stable/elixir/Supervisor.html
+ # for other strategies and supported options
+ opts = [strategy: :one_for_one, name: Draw.Supervisor]
+ Supervisor.start_link(children, opts)
+ end
+
+ # Tell Phoenix to update the endpoint configuration
+ # whenever the application is updated.
+ def config_change(changed, _new, removed) do
+ Draw.Endpoint.config_change(changed, removed)
+ :ok
+ end
+end
@@ -0,0 +1,42 @@
+defmodule Draw.Endpoint do
+ use Phoenix.Endpoint, otp_app: :draw
+
+ socket "/socket", Draw.UserSocket
+
+ # Serve at "/" the static files from "priv/static" directory.
+ #
+ # You should set gzip to true if you are running phoenix.digest
+ # when deploying your static files in production.
+ plug Plug.Static,
+ at: "/", from: :draw, gzip: false,
+ only: ~w(css fonts images js favicon.ico robots.txt)
+
+ # Code reloading can be explicitly enabled under the
+ # :code_reloader configuration of your endpoint.
+ if code_reloading? do
+ socket "/phoenix/live_reload/socket", Phoenix.LiveReloader.Socket
+ plug Phoenix.LiveReloader
+ plug Phoenix.CodeReloader
+ end
+
+ plug Plug.RequestId
+ plug Plug.Logger
+
+ plug Plug.Parsers,
+ parsers: [:urlencoded, :multipart, :json],
+ pass: ["*/*"],
+ json_decoder: Poison
+
+ plug Plug.MethodOverride
+ plug Plug.Head
+
+ # The session will be stored in the cookie and signed,
+ # this means its contents can be read but not tampered with.
+ # Set :encryption_salt if you would also like to encrypt it.
+ plug Plug.Session,
+ store: :cookie,
+ key: "_draw_key",
+ signing_salt: "k7qJVmu3"
+
+ plug Draw.Router
+end
38 mix.exs
@@ -0,0 +1,38 @@
+defmodule Draw.Mixfile do
+ use Mix.Project
+
+ def project do
+ [app: :draw,
+ version: "0.0.1",
+ elixir: "~> 1.2",
+ elixirc_paths: elixirc_paths(Mix.env),
+ compilers: [:phoenix, :gettext] ++ Mix.compilers,
+ build_embedded: Mix.env == :prod,
+ start_permanent: Mix.env == :prod,
+ deps: deps()]
+ end
+
+ # Configuration for the OTP application.
+ #
+ # Type `mix help compile.app` for more information.
+ def application do
+ [mod: {Draw, []},
+ applications: [:phoenix, :phoenix_pubsub, :phoenix_html, :cowboy, :logger, :gettext]]
+ end
+
+ # Specifies which paths to compile per environment.
+ defp elixirc_paths(:test), do: ["lib", "web", "test/support"]
+ defp elixirc_paths(_), do: ["lib", "web"]
+
+ # Specifies your project dependencies.
+ #
+ # Type `mix help deps` for examples and options.
+ defp deps do
+ [{:phoenix, "~> 1.2.1"},
+ {:phoenix_pubsub, "~> 1.0"},
+ {:phoenix_html, "~> 2.6"},
+ {:phoenix_live_reload, "~> 1.0", only: :dev},
+ {:gettext, "~> 0.11"},
+ {:cowboy, "~> 1.0"}]
+ end
+end
@@ -0,0 +1,12 @@
+%{"cowboy": {:hex, :cowboy, "1.0.4", "a324a8df9f2316c833a470d918aaf73ae894278b8aa6226ce7a9bf699388f878", [:rebar, :make], [{:cowlib, "~> 1.0.0", [hex: :cowlib, optional: false]}, {:ranch, "~> 1.0", [hex: :ranch, optional: false]}]},
+ "cowlib": {:hex, :cowlib, "1.0.2", "9d769a1d062c9c3ac753096f868ca121e2730b9a377de23dec0f7e08b1df84ee", [:make], []},
+ "fs": {:hex, :fs, "0.9.2", "ed17036c26c3f70ac49781ed9220a50c36775c6ca2cf8182d123b6566e49ec59", [:rebar], []},
+ "gettext": {:hex, :gettext, "0.11.0", "80c1dd42d270482418fa158ec5ba073d2980e3718bacad86f3d4ad71d5667679", [:mix], []},
+ "mime": {:hex, :mime, "1.0.1", "05c393850524767d13a53627df71beeebb016205eb43bfbd92d14d24ec7a1b51", [:mix], []},
+ "phoenix": {:hex, :phoenix, "1.2.1", "6dc592249ab73c67575769765b66ad164ad25d83defa3492dc6ae269bd2a68ab", [:mix], [{:cowboy, "~> 1.0", [hex: :cowboy, optional: true]}, {:phoenix_pubsub, "~> 1.0", [hex: :phoenix_pubsub, optional: false]}, {:plug, "~> 1.1", [hex: :plug, optional: false]}, {:poison, "~> 1.5 or ~> 2.0", [hex: :poison, optional: false]}]},
+ "phoenix_html": {:hex, :phoenix_html, "2.7.0", "19e12e2044340c2e43df206a06d059677c59ea1868bd1c35165438d592cd420b", [:mix], [{:plug, "~> 1.0", [hex: :plug, optional: false]}]},
+ "phoenix_live_reload": {:hex, :phoenix_live_reload, "1.0.5", "829218c4152ba1e9848e2bf8e161fcde6b4ec679a516259442561d21fde68d0b", [:mix], [{:fs, "~> 0.9.1", [hex: :fs, optional: false]}, {:phoenix, "~> 1.0 or ~> 1.2-rc", [hex: :phoenix, optional: false]}]},
+ "phoenix_pubsub": {:hex, :phoenix_pubsub, "1.0.1", "c10ddf6237007c804bf2b8f3c4d5b99009b42eca3a0dfac04ea2d8001186056a", [:mix], []},
+ "plug": {:hex, :plug, "1.2.2", "cfbda521b54c92ab8ddffb173fbaabed8d8fc94bec07cd9bb58a84c1c501b0bd", [:mix], [{:cowboy, "~> 1.0", [hex: :cowboy, optional: true]}, {:mime, "~> 1.0", [hex: :mime, optional: false]}]},
+ "poison": {:hex, :poison, "2.2.0", "4763b69a8a77bd77d26f477d196428b741261a761257ff1cf92753a0d4d24a63", [:mix], []},
+ "ranch": {:hex, :ranch, "1.2.1", "a6fb992c10f2187b46ffd17ce398ddf8a54f691b81768f9ef5f461ea7e28c762", [:make], []}}
@@ -0,0 +1,20 @@
+{
+ "repository": {},
+ "license": "MIT",
+ "scripts": {
+ "deploy": "brunch build --production",
+ "watch": "brunch watch --stdin"
+ },
+ "dependencies": {
+ "phoenix": "file:deps/phoenix",
+ "phoenix_html": "file:deps/phoenix_html"
+ },
+ "devDependencies": {
+ "babel-brunch": "~6.0.0",
+ "brunch": "2.7.4",
+ "clean-css-brunch": "~2.0.0",
+ "css-brunch": "~2.0.0",
+ "javascript-brunch": "~2.0.0",
+ "uglify-js-brunch": "~2.0.1"
+ }
+}
Oops, something went wrong.

0 comments on commit 3175919

Please sign in to comment.