commit 7152f830c0fb6c28685b90a556b8fc5cc86649f7 Author: Ashley Rose Date: Mon Feb 23 10:45:57 2026 -0600 Init diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3a5d311 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +.cache +vendor diff --git a/composer.json b/composer.json new file mode 100644 index 0000000..8d8c008 --- /dev/null +++ b/composer.json @@ -0,0 +1,5 @@ +{ + "require": { + "twig/twig": "^3.0" + } +} diff --git a/composer.lock b/composer.lock new file mode 100644 index 0000000..f4e8936 --- /dev/null +++ b/composer.lock @@ -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" +} diff --git a/functions.php b/functions.php new file mode 100644 index 0000000..08910fa --- /dev/null +++ b/functions.php @@ -0,0 +1,6 @@ + '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); \ No newline at end of file diff --git a/routes/404.php b/routes/404.php new file mode 100644 index 0000000..33ed483 --- /dev/null +++ b/routes/404.php @@ -0,0 +1,5 @@ +render('404.html.twig'); \ No newline at end of file diff --git a/routes/ember.php b/routes/ember.php new file mode 100644 index 0000000..20fb080 --- /dev/null +++ b/routes/ember.php @@ -0,0 +1,5 @@ +render('ember.html.twig'); \ No newline at end of file diff --git a/routes/index.php b/routes/index.php new file mode 100644 index 0000000..099681b --- /dev/null +++ b/routes/index.php @@ -0,0 +1,5 @@ +render('index.html.twig'); \ No newline at end of file diff --git a/shared.php b/shared.php new file mode 100644 index 0000000..557230e --- /dev/null +++ b/shared.php @@ -0,0 +1,8 @@ + '.cache', +]); \ No newline at end of file diff --git a/static/css/main.css b/static/css/main.css new file mode 100644 index 0000000..824f0c7 --- /dev/null +++ b/static/css/main.css @@ -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; +} \ No newline at end of file diff --git a/static/image/death.jpeg b/static/image/death.jpeg new file mode 100644 index 0000000..45c32dc Binary files /dev/null and b/static/image/death.jpeg differ diff --git a/static/image/favicon.png b/static/image/favicon.png new file mode 100644 index 0000000..c98258c Binary files /dev/null and b/static/image/favicon.png differ diff --git a/static/image/fool.jpeg b/static/image/fool.jpeg new file mode 100644 index 0000000..3444548 Binary files /dev/null and b/static/image/fool.jpeg differ diff --git a/static/image/hangedman.jpeg b/static/image/hangedman.jpeg new file mode 100644 index 0000000..63fcfa1 Binary files /dev/null and b/static/image/hangedman.jpeg differ diff --git a/static/image/hermit.jpeg b/static/image/hermit.jpeg new file mode 100644 index 0000000..c26221b Binary files /dev/null and b/static/image/hermit.jpeg differ diff --git a/static/image/hierophant.jpeg b/static/image/hierophant.jpeg new file mode 100644 index 0000000..1d09fcd Binary files /dev/null and b/static/image/hierophant.jpeg differ diff --git a/static/image/lovers.jpeg b/static/image/lovers.jpeg new file mode 100644 index 0000000..73ea8a2 Binary files /dev/null and b/static/image/lovers.jpeg differ diff --git a/static/image/star.jpeg b/static/image/star.jpeg new file mode 100644 index 0000000..31d79ca Binary files /dev/null and b/static/image/star.jpeg differ diff --git a/templates/404.html.twig b/templates/404.html.twig new file mode 100644 index 0000000..6ffe1f0 --- /dev/null +++ b/templates/404.html.twig @@ -0,0 +1,10 @@ +{% extends "base.html.twig" %} + +{% block title %}404{% endblock %} +{% block content %} +

+ + 404 Page Not Found + +

+{% endblock %} \ No newline at end of file diff --git a/templates/base.html.twig b/templates/base.html.twig new file mode 100644 index 0000000..2bef36f --- /dev/null +++ b/templates/base.html.twig @@ -0,0 +1,26 @@ + + + + {% block head %} + + {% block title %}{% endblock %} - Angel Icons + {% endblock %} + + +
+ +
+
{% block content %}{% endblock %}
+ + + \ No newline at end of file diff --git a/templates/ember.html.twig b/templates/ember.html.twig new file mode 100644 index 0000000..d76483e --- /dev/null +++ b/templates/ember.html.twig @@ -0,0 +1,23 @@ +{% extends 'base.html.twig' %} + +{% block title %}Ember{% endblock %} +{% block content %} +

+ ๐Ÿ’œEmber๐Ÿ’œ +

+

+ + Sacrifice - Forgiveness - Perseverance - Passion + +

+ The Hanged Man +

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

+{% endblock %} \ No newline at end of file diff --git a/templates/index.html.twig b/templates/index.html.twig new file mode 100644 index 0000000..c328283 --- /dev/null +++ b/templates/index.html.twig @@ -0,0 +1,127 @@ +{% extends "base.html.twig" %} + +{% block title %}Home{% endblock %} +{% block content %} +

+ + ๐Ÿ’œโค๏ธAngel Icons๐Ÿ–ค๐Ÿ’™ + +

+

+ Angel Icons 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. +

+ The Fool +

+ There are three standard ways to use an Angel Icon: +
+ Virtue, Stalwart, and Shining. +

+

+ + Virtue + +

+ The Hermit +

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

+

+ + Stalwart + +

+ The Hierophant +

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

+

+ + Shining + +

+ The Lovers +

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

+

+ + What is an Angel, exactly? + +

+ The Star +

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

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

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

+

+ + Angels of Faye's End + +

+ Death +

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

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

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

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

+{% endblock %} \ No newline at end of file