Merge branch 'launch-documentation' into 'master'
feat: Add initial framework documentation See merge request mythic-insight/legendary!50
This commit is contained in:
commit
8dbd88ef03
13 changed files with 109 additions and 22 deletions
|
@ -1,5 +1,5 @@
|
|||
stages:
|
||||
- application_dependencies
|
||||
- prebuild
|
||||
- asset_dependencies
|
||||
- test
|
||||
- deploy_tags
|
||||
|
@ -15,11 +15,10 @@ variables:
|
|||
# fetch & clean the repo rather than completely cloning (faster)
|
||||
GIT_STRATEGY: fetch
|
||||
|
||||
# Dependency stages-- fetch these first so that we can cache them and reuse them
|
||||
# across jobs and pipelines. Note that elixir deps need to go first, because
|
||||
# we need the phoenix and phoenix_html hex packages to install their JS.
|
||||
fetch_application_dependencies:
|
||||
stage: application_dependencies
|
||||
# Build the app once and cache it so that we can have fast compiles in test
|
||||
# and Docker built steps
|
||||
prebuild:
|
||||
stage: prebuild
|
||||
image: "elixir:1.10"
|
||||
cache:
|
||||
key:
|
||||
|
@ -33,6 +32,7 @@ fetch_application_dependencies:
|
|||
- mix local.rebar --force
|
||||
- mix deps.get
|
||||
- mix deps.compile
|
||||
- mix compile
|
||||
# Make results available to other jobs
|
||||
artifacts:
|
||||
paths:
|
||||
|
@ -45,7 +45,7 @@ fetch_asset_dependencies:
|
|||
stage: asset_dependencies
|
||||
image: "node:15.0"
|
||||
needs:
|
||||
- fetch_application_dependencies
|
||||
- prebuild
|
||||
only:
|
||||
- master
|
||||
cache:
|
||||
|
@ -68,7 +68,7 @@ fetch_asset_dependencies:
|
|||
test:
|
||||
stage: test
|
||||
needs:
|
||||
- fetch_application_dependencies
|
||||
- prebuild
|
||||
image: "elixir:1.10"
|
||||
services:
|
||||
- name: postgres:12
|
||||
|
@ -85,7 +85,7 @@ build_image_for_commit:
|
|||
stage: test
|
||||
needs:
|
||||
- fetch_asset_dependencies
|
||||
- fetch_application_dependencies
|
||||
- prebuild
|
||||
image: "docker:20.10"
|
||||
only:
|
||||
- master
|
||||
|
@ -99,6 +99,7 @@ build_image_for_commit:
|
|||
- _build/
|
||||
- deps/
|
||||
script:
|
||||
- ls -la _build
|
||||
- docker login "https://${CI_REGISTRY}" -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD
|
||||
- docker pull $CI_REGISTRY_IMAGE:latest || true
|
||||
# This enables fast parallel builds
|
||||
|
@ -109,6 +110,7 @@ build_image_for_commit:
|
|||
- docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
|
||||
# This copies the elixir build artifacts for deps and app so that we can cache them
|
||||
- docker cp `docker create $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA`:/root/app/_build/prod _build
|
||||
- ls -la _build
|
||||
|
||||
# If tests pass, tag the commit and update package versions
|
||||
deploy_to_tags:
|
||||
|
|
1
apps/core/guides/features/admin.md
Normal file
1
apps/core/guides/features/admin.md
Normal file
|
@ -0,0 +1 @@
|
|||
# Admin
|
1
apps/core/guides/features/auth.md
Normal file
1
apps/core/guides/features/auth.md
Normal file
|
@ -0,0 +1 @@
|
|||
# Authentication and Authorization
|
1
apps/core/guides/features/background-jobs.md
Normal file
1
apps/core/guides/features/background-jobs.md
Normal file
|
@ -0,0 +1 @@
|
|||
# Background Jobs
|
1
apps/core/guides/features/content-management.md
Normal file
1
apps/core/guides/features/content-management.md
Normal file
|
@ -0,0 +1 @@
|
|||
# Content Management
|
1
apps/core/guides/features/devops-templates.md
Normal file
1
apps/core/guides/features/devops-templates.md
Normal file
|
@ -0,0 +1 @@
|
|||
# DevOps Templates
|
1
apps/core/guides/features/fluid-email-templates.md
Normal file
1
apps/core/guides/features/fluid-email-templates.md
Normal file
|
@ -0,0 +1 @@
|
|||
# Fluid Email Templates
|
1
apps/core/guides/features/i18n.md
Normal file
1
apps/core/guides/features/i18n.md
Normal file
|
@ -0,0 +1 @@
|
|||
# I18n
|
1
apps/core/guides/features/tasks-and-scripts.md
Normal file
1
apps/core/guides/features/tasks-and-scripts.md
Normal file
|
@ -0,0 +1 @@
|
|||
# Tasks and Scripts
|
|
@ -23,6 +23,13 @@ development better.
|
|||
|
||||
## Up and Running
|
||||
|
||||
Since Legendary is both a template and a framework, you can simply clone the repo
|
||||
to start using it. It's a fully functional Phoenix app as-is. To start a new project:
|
||||
|
||||
```sh
|
||||
git clone git@gitlab.com:mythic-insight/legendary.git <project_name>
|
||||
```
|
||||
|
||||
In order to start the server, run `script/server`. Any dependencies required
|
||||
will be installed automatically using [brew](https://brew.sh/),
|
||||
[asdf](https://asdf-vm.com/#/), and [hex](https://hex.pm/).
|
||||
|
@ -31,27 +38,31 @@ Now you can visit [`localhost:4000`](http://localhost:4000) from your browser.
|
|||
|
||||
## Development
|
||||
|
||||
Your main app lives in apps/app/ and that is where you will do most of your
|
||||
Check out [the tutorial](tutorial.md) to learn how to build your first app with
|
||||
Legendary.
|
||||
|
||||
Your main app lives in apps/app/ and you will do most of your
|
||||
development there. This is a normal Phoenix application and you can develop it
|
||||
as such. Any resources which apply to developing Phoenix applications will apply
|
||||
inside of the app. See the [Phoenix Guides](https://hexdocs.pm/phoenix/overview.html)
|
||||
for a good starting resource in Phoenix development.
|
||||
|
||||
You should not generally need to change code in the other applications which
|
||||
are part of the framework-- admin, content, core. We encourage you to avoid
|
||||
changing those as much as possible, because doing so will make it more difficult
|
||||
to upgrade Legendary to newer versions. However, they are available to you if
|
||||
you find that there are no other ways to accomplish the changes you want to
|
||||
accomplish. If you find yourself adding functionality to admin, content, or core
|
||||
are part of the framework-- apps/admin, apps/content, apps/core. We encourage you
|
||||
to avoid changing those as much as possible, because doing so will make it more
|
||||
difficult to upgrade Legendary to newer versions. However, they are available to
|
||||
you if you find that there are no other ways to accomplish the changes that you want.
|
||||
If you find yourself adding functionality to admin, content, or core
|
||||
that you feel would be beneficial to all Legendary apps, consider making a
|
||||
code contribution back to the framework!
|
||||
|
||||
## CI Configuration
|
||||
|
||||
Legendary comes with gitlab CI settings which should work for you with minimal
|
||||
Legendary comes with GitLab CI settings which should work for you with minimal
|
||||
setup.
|
||||
|
||||
The CI script will automatically tag successful builds. To do this, you will
|
||||
need to configure a [CI variable](-/settings/ci_cd) named `GITLAB_TOKEN`. This
|
||||
token should be a [personal access token](/-/profile/personal_access_tokens) with
|
||||
need to configure a [CI variable](https://docs.gitlab.com/ee/ci/variables/) named
|
||||
`GITLAB_TOKEN`. This token should be a
|
||||
[personal access token](https://gitlab.com/-/profile/personal_access_tokens) with
|
||||
`read_repository, write_repository` permissions.
|
||||
|
|
1
apps/core/guides/tutorial.md
Normal file
1
apps/core/guides/tutorial.md
Normal file
|
@ -0,0 +1 @@
|
|||
# Tutorial
|
|
@ -1,6 +1,6 @@
|
|||
defmodule Legendary.CoreWeb.Helpers do
|
||||
@moduledoc """
|
||||
HTML helpers for our styled (Fomantic UI) forms.
|
||||
HTML helpers for our styled (Tailwind) forms.
|
||||
"""
|
||||
use Phoenix.HTML
|
||||
|
||||
|
|
|
@ -26,8 +26,10 @@ defmodule Legendary.Core.MixProject do
|
|||
homepage_url: "https://legendaryframework.org/",
|
||||
docs: [
|
||||
main: "overview",
|
||||
extra_section: "GUIDES",
|
||||
extras: extras()
|
||||
extra_section: "Getting Started",
|
||||
extras: extras(),
|
||||
groups_for_extras: groups_for_extras(),
|
||||
groups_for_modules: groups_for_modules(),
|
||||
],
|
||||
|
||||
# Hex
|
||||
|
@ -45,7 +47,70 @@ defmodule Legendary.Core.MixProject do
|
|||
end
|
||||
|
||||
defp extras do
|
||||
Path.wildcard("guides/**/*.md")
|
||||
[
|
||||
"guides/overview.md",
|
||||
"guides/tutorial.md",
|
||||
# "guides/tutorial.md": [filename: "tutorial", title: "Tutorial"],
|
||||
"guides/features/admin.md",
|
||||
"guides/features/auth.md",
|
||||
"guides/features/background-jobs.md",
|
||||
"guides/features/content-management.md",
|
||||
"guides/features/devops-templates.md",
|
||||
"guides/features/fluid-email-templates.md",
|
||||
"guides/features/i18n.md",
|
||||
"guides/features/tasks-and-scripts.md",
|
||||
]
|
||||
end
|
||||
|
||||
defp groups_for_extras do
|
||||
[
|
||||
Guides: ~r{guides/[^\.]+.md},
|
||||
]
|
||||
end
|
||||
|
||||
defp groups_for_modules do
|
||||
[
|
||||
"Auth": [
|
||||
Legendary.Auth,
|
||||
Legendary.AuthWeb,
|
||||
~r{Legendary\.Auth(Web)?\..+},
|
||||
Legendary.CoreWeb.Router.PowExtensionRouter
|
||||
],
|
||||
"Email": [
|
||||
Legendary.CoreEmail,
|
||||
Legendary.CoreMailer,
|
||||
Legendary.CoreWeb.EmailHelpers,
|
||||
Legendary.CoreWeb.CoreEmailView,
|
||||
],
|
||||
"Internationalization": [
|
||||
Legendary.I18n
|
||||
],
|
||||
"Mix Tasks": [
|
||||
Legendary.Mix,
|
||||
],
|
||||
"View Helpers": [
|
||||
Legendary.CoreWeb.ErrorHelpers,
|
||||
Legendary.CoreWeb.Helpers,
|
||||
],
|
||||
"Core Other": [
|
||||
Legendary.Core,
|
||||
Legendary.Core.MapUtils,
|
||||
Legendary.Core.Repo,
|
||||
Legendary.Core.SharedDBConnectionPool,
|
||||
Mix.Legendary,
|
||||
],
|
||||
"Web Other": [
|
||||
Legendary.CoreWeb,
|
||||
Legendary.CoreWeb.Endpoint,
|
||||
Legendary.CoreWeb.ErrorView,
|
||||
Legendary.CoreWeb.Gettext,
|
||||
Legendary.CoreWeb.LayoutView,
|
||||
Legendary.CoreWeb.Router,
|
||||
Legendary.CoreWeb.Router.Helpers,
|
||||
Legendary.CoreWeb.Telemetry,
|
||||
Legendary.CoreWeb.UserSocket,
|
||||
]
|
||||
]
|
||||
end
|
||||
|
||||
# Configuration for the OTP application.
|
||||
|
|
Loading…
Reference in a new issue