This commit is contained in:
Ashley Rose
2026-02-23 10:45:57 -06:00
commit 7152f830c0
23 changed files with 636 additions and 0 deletions
+2
View File
@@ -0,0 +1,2 @@
.cache
vendor
+5
View File
@@ -0,0 +1,5 @@
{
"require": {
"twig/twig": "^3.0"
}
}
Generated
+333
View File
@@ -0,0 +1,333 @@
{
"_readme": [
"This file locks the dependencies of your project to a known state",
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "6a6772df2521c6860a448e9115f2793a",
"packages": [
{
"name": "symfony/deprecation-contracts",
"version": "v3.6.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/deprecation-contracts.git",
"reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/63afe740e99a13ba87ec199bb07bbdee937a5b62",
"reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62",
"shasum": ""
},
"require": {
"php": ">=8.1"
},
"type": "library",
"extra": {
"thanks": {
"url": "https://github.com/symfony/contracts",
"name": "symfony/contracts"
},
"branch-alias": {
"dev-main": "3.6-dev"
}
},
"autoload": {
"files": [
"function.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "A generic function and convention to trigger deprecation notices",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/deprecation-contracts/tree/v3.6.0"
},
"funding": [
{
"url": "https://symfony.com/sponsor",
"type": "custom"
},
{
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
"time": "2024-09-25T14:21:43+00:00"
},
{
"name": "symfony/polyfill-ctype",
"version": "v1.33.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-ctype.git",
"reference": "a3cc8b044a6ea513310cbd48ef7333b384945638"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/a3cc8b044a6ea513310cbd48ef7333b384945638",
"reference": "a3cc8b044a6ea513310cbd48ef7333b384945638",
"shasum": ""
},
"require": {
"php": ">=7.2"
},
"provide": {
"ext-ctype": "*"
},
"suggest": {
"ext-ctype": "For best performance"
},
"type": "library",
"extra": {
"thanks": {
"url": "https://github.com/symfony/polyfill",
"name": "symfony/polyfill"
}
},
"autoload": {
"files": [
"bootstrap.php"
],
"psr-4": {
"Symfony\\Polyfill\\Ctype\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Gert de Pagter",
"email": "BackEndTea@gmail.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony polyfill for ctype functions",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
"ctype",
"polyfill",
"portable"
],
"support": {
"source": "https://github.com/symfony/polyfill-ctype/tree/v1.33.0"
},
"funding": [
{
"url": "https://symfony.com/sponsor",
"type": "custom"
},
{
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
"time": "2024-09-09T11:45:10+00:00"
},
{
"name": "symfony/polyfill-mbstring",
"version": "v1.33.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-mbstring.git",
"reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/6d857f4d76bd4b343eac26d6b539585d2bc56493",
"reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493",
"shasum": ""
},
"require": {
"ext-iconv": "*",
"php": ">=7.2"
},
"provide": {
"ext-mbstring": "*"
},
"suggest": {
"ext-mbstring": "For best performance"
},
"type": "library",
"extra": {
"thanks": {
"url": "https://github.com/symfony/polyfill",
"name": "symfony/polyfill"
}
},
"autoload": {
"files": [
"bootstrap.php"
],
"psr-4": {
"Symfony\\Polyfill\\Mbstring\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony polyfill for the Mbstring extension",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
"mbstring",
"polyfill",
"portable",
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-mbstring/tree/v1.33.0"
},
"funding": [
{
"url": "https://symfony.com/sponsor",
"type": "custom"
},
{
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
"time": "2024-12-23T08:48:59+00:00"
},
{
"name": "twig/twig",
"version": "v3.23.0",
"source": {
"type": "git",
"url": "https://github.com/twigphp/Twig.git",
"reference": "a64dc5d2cc7d6cafb9347f6cd802d0d06d0351c9"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/twigphp/Twig/zipball/a64dc5d2cc7d6cafb9347f6cd802d0d06d0351c9",
"reference": "a64dc5d2cc7d6cafb9347f6cd802d0d06d0351c9",
"shasum": ""
},
"require": {
"php": ">=8.1.0",
"symfony/deprecation-contracts": "^2.5|^3",
"symfony/polyfill-ctype": "^1.8",
"symfony/polyfill-mbstring": "^1.3"
},
"require-dev": {
"phpstan/phpstan": "^2.0",
"psr/container": "^1.0|^2.0",
"symfony/phpunit-bridge": "^5.4.9|^6.4|^7.0"
},
"type": "library",
"autoload": {
"files": [
"src/Resources/core.php",
"src/Resources/debug.php",
"src/Resources/escaper.php",
"src/Resources/string_loader.php"
],
"psr-4": {
"Twig\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-3-Clause"
],
"authors": [
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com",
"homepage": "http://fabien.potencier.org",
"role": "Lead Developer"
},
{
"name": "Twig Team",
"role": "Contributors"
},
{
"name": "Armin Ronacher",
"email": "armin.ronacher@active-4.com",
"role": "Project Founder"
}
],
"description": "Twig, the flexible, fast, and secure template language for PHP",
"homepage": "https://twig.symfony.com",
"keywords": [
"templating"
],
"support": {
"issues": "https://github.com/twigphp/Twig/issues",
"source": "https://github.com/twigphp/Twig/tree/v3.23.0"
},
"funding": [
{
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/twig/twig",
"type": "tidelift"
}
],
"time": "2026-01-23T21:00:41+00:00"
}
],
"packages-dev": [],
"aliases": [],
"minimum-stability": "stable",
"stability-flags": {},
"prefer-stable": false,
"prefer-lowest": false,
"platform": {},
"platform-dev": {},
"plugin-api-version": "2.9.0"
}
+6
View File
@@ -0,0 +1,6 @@
<?php
function urlIs($value)
{
return $_SERVER['REQUEST_URI'] === $value;
}
+5
View File
@@ -0,0 +1,5 @@
<?php
require 'functions.php';
require 'router.php';
require 'shared.php';
+28
View File
@@ -0,0 +1,28 @@
<?php
$uri = parse_url($_SERVER['REQUEST_URI'])['path'];
$routes = [
'/' => 'routes/index.php',
'/ember' => 'routes/ember.php',
];
function routeToController($uri, $routes)
{
if (array_key_exists($uri, $routes)) {
require $routes[$uri];
} else {
abort();
}
}
function abort($code = 404)
{
http_response_code($code);
require "routes/404.php";
die(0);
}
routeToController($uri, $routes);
+5
View File
@@ -0,0 +1,5 @@
<?php
require 'shared.php';
echo $twig->render('404.html.twig');
+5
View File
@@ -0,0 +1,5 @@
<?php
require 'shared.php';
echo $twig->render('ember.html.twig');
+5
View File
@@ -0,0 +1,5 @@
<?php
require 'shared.php';
echo $twig->render('index.html.twig');
+8
View File
@@ -0,0 +1,8 @@
<?php
require_once 'vendor/autoload.php';
$loader = new \Twig\Loader\FilesystemLoader('templates');
$twig = new \Twig\Environment($loader, [
'cache' => '.cache',
]);
+48
View File
@@ -0,0 +1,48 @@
@import url('https://fonts.googleapis.com/css2?family=Noto+Color+Emoji&display=swap');
.no-emoji {
font-family: monospace;
}
body {
background: black;
color: greenyellow;
font-family: monospace;
font-size: 24px;
}
footer {
text-align: center;
}
h1:not(.no-emoji), nav>a {
font-family: 'Noto Color Emoji', monospace;
}
header {
margin-left: auto;
margin-right: auto;
text-align: center;
}
main {
background: darkslategrey;
margin-left: auto;
margin-right: auto;
padding-bottom: 20px;
padding-top: 20px;
text-align: center;
width: 75%;
}
nav {
align-items: center;
display: flex;
justify-content: center;
position: relative;
}
nav>a {
font-size: 70px;
text-decoration: none;
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 131 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

+10
View File
@@ -0,0 +1,10 @@
{% extends "base.html.twig" %}
{% block title %}404{% endblock %}
{% block content %}
<h1 class="no-emoji">
<strong>
404 Page Not Found
</strong>
</h1>
{% endblock %}
+26
View File
@@ -0,0 +1,26 @@
<!DOCTYPE html>
<html>
<head>
{% block head %}
<link rel="stylesheet" href="/static/css/main.css">
<title>{% block title %}{% endblock %} - Angel Icons</title>
{% endblock %}
</head>
<body>
<header>
<nav>
<a href="/ember">💜</a>
<a href="/chalice">❤️</a>
<a href="/"><img src="/static/image/favicon.png" alt="Tree of Life" height="200px"></a>
<a href="/sword">🖤</a>
<a href="/pentacle">💙</a>
</nav>
</header>
<main>{% block content %}{% endblock %}</main>
<footer>
{% block footer %}
&copy; Copyright 2026 Faye.
{% endblock %}
</footer>
</body>
</html>
+23
View File
@@ -0,0 +1,23 @@
{% extends 'base.html.twig' %}
{% block title %}Ember{% endblock %}
{% block content %}
<h1>
<strong>💜Ember💜</strong>
</h1>
<p>
<strong>
<em>Sacrifice - Forgiveness - Perseverance - Passion</em>
</strong>
</p>
<img src="/static/image/hangedman.jpeg" alt="The Hanged Man">
<p>
Ember reminds us that making both stability and change requires sacrifice; that
nothing worth living or fighting for will be without cost. A better world will
require all of us to respond to pain not with lack of bravery or violence, but
with understanding and patience, to both friend and enemy. It is not a sad icon,
but a passionate one of being able to bounce back up. We take that pain and use
it to drive us and give our lives meaning, and then get self-respect and pride
which makes up for it many times over.
</p>
{% endblock %}
+127
View File
@@ -0,0 +1,127 @@
{% extends "base.html.twig" %}
{% block title %}Home{% endblock %}
{% block content %}
<h1>
<strong>
💜❤️Angel Icons🖤💙
</strong>
</h1>
<p>
<em>Angel Icons</em> are the marks of the Angels of Faye. Not all people who have them are
Angels, but all align with aspects of Faye's value and would like to have celest leave
celestial mark on the world. The icons above will go to their descriptions, but their true
nature can only be revealed with experience.
</p>
<img src="/static/image/fool.jpeg" alt="The Fool">
<p>
There are three standard ways to use an Angel Icon:
<br>
<strong>Virtue</strong>, <strong>Stalwart</strong>, and <strong>Shining</strong>.
</p>
<h2>
<strong>
<u>Virtue</u>
</strong>
</h2>
<img src="/static/image/hermit.jpeg" alt="The Hermit">
<p>
Virtue Icons are shown in a single line in a being's about section. They represent a common
belief in some aspect of Faye's philosophy. The true meaning of icons is complex, and you can
remove them or add new ones as you continue learning. This is your first step, but does not
represent any commitment in Angels of Faye, only agreement. They are the foundation of Angels
of Faye, so once an Angel removes them all, they will no longer be an Angel, and should
remove the rest of the icons as well.
</p>
<h2>
<strong>
<u>Stalwart</u>
</strong>
</h2>
<img src="/static/image/hierophant.jpeg" alt="The Hierophant">
<p>
Stalwart Icons also are shown in the about section, shown differently from Virtue Icons by
being on a line after them. An example can be found in Faye's about section: Virtue on top,
Stalwart on bottom. Stalwart Icons represent a commitment to "Angels," the collective name
of beings who are part of Faye's ongoing work: The community of Angels of Faye. You are
encouraged to hold your Virtue Icons with everyone, but your commitment to do so is only
with Angels. This creates a community which supports each other, making it better at making
what Faye wants to happen, happen.
</p>
<h2>
<strong>
<u>Shining</u>
</strong>
</h2>
<img src="/static/image/lovers.jpeg" alt="The Lovers">
<p>
Shining Icons appear in your display name representing your specific commitment to Faye, more
openly marking you as celestial Angel. They represent your personal relationship with Faye,
acting as consent to be treated by celest in a way by that icon's design, as well as your
commitment to finding ways to be of use to celest in that way. Permission must be given by
Faye to become a Shining Angel, and you must undergo ceremony. It is not likely you will be
accepted if you have not mastered one or more Stalwart Icons, shown by having kept your
commitments to Faye's liking, though exceptions may be made for any reason.
</p>
<h2>
<strong>
<u>What is an Angel, exactly?</u>
</strong>
</h2>
<img src="/static/image/star.jpeg" alt="The Star">
<p>
Angels of Faye is a community which pushes what we deem socially acceptable in our
relationships and communities. It combines commitment with modularity and flexibility. It is
voluntary, graded, and profound. It is frightening; cult-like; paradoxical and far deeper in
its darkest depths than any one other than Faye knows. It is misunderstood, assumed about,
and for that is pushed away from the wider community. But perhaps about all, Angels of Faye
is hope: Hope that there can be better. Better communities. Better beings. Better
relationships. Better selves. And through making what Faye wants to happen, happen, a better
world.
<br><br>
An Angel is anyone who is ready and willing to help what Faye wants to happen, happen, and
accepts a possessive nature which places Faye about them; if not in fact, then towards an
end they want. The beauty of Angels of Faye comes from each Angel accepting modesty. Only
you know if you are Faye's Angel. You are not required to display that you are an Angel, but
without marks, you will not be treated as one. Angel's commitments apply only to beings who
make it clear to everyone that they are an Angel.
<br><br>
Angel serves Angel. We are all servant and master. Even Faye, holding unquestioned power over
Angels of Faye, sees celestial role mainly as an overseer. Angels of Faye serves Faye, but
their wellbeing is an essential part of what they serve. If you are Faye's Angel, and you are
in any trouble, you only need to reach out. Faye will advocate for you.
</p>
<h2>
<strong>
<u>Angels of Faye's End</u>
</strong>
</h2>
<img src="/static/image/death.jpeg" alt="Death">
<p>
Angels of Faye is not for everyone. There are many who will reject Angels of Faye who would
have benefited from it. But there are also beings who accept it who Faye will fail. Faye is
an amazing being. But Faye is also in many ways less than impressive, and this will show more
as time goes on. As any relationship, things can come to an end. Faye will never hold it
against them. As long as they treat Faye and celestial Angels with respect, they can expect
the same from us, and cel will always ask them to respect the Angel-Line: Do not pressure
anyone into taking icons. If they are already an Angel, then they already know what they can
do. Having them take on icons they are not ready for will only be telling them to lie about
what they can do.
<br><br>
Icons can be removed at any time. Commitments are self-enforced. Most commitments in life
come with punishments when they are not done. But Faye wants to make a system where whenever
it is possible, people act on desire, instead of being forced. If they suffer for Angels of
Faye, Faye wants it to be worth it for them in the end. This will not always happen as it is
planned, and this is a sad reality of all relationships.
<br><br>
As long as you are not using these icons to hurt us, a single Stalwart will keep for you all
commitments other have made for Angel. And if one stops being an Angel, there are no
consequences other than dropping commitments. Faye encourages all Angels to act in these ways
regardless; this just ends the commitments to do so.
<br><br>
Above everything, understand that you will fail Faye, and cel will forgive you for it. Find
your own happiness as celestial Angel, or even as an ally, and become apart of something
greater. If you ever believe that you cannot find happiness as celestial Angel, you are to
stop being one.
</p>
{% endblock %}