From c927d9490e02b27b1e83320e4e4d9e90d614cb4c Mon Sep 17 00:00:00 2001 From: ari melody Date: Mon, 2 Oct 2023 06:30:54 +0100 Subject: [PATCH] =?UTF-8?q?first=20commit!=20=F0=9F=8E=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 3 + Dockerfile | 15 + LICENSE.txt | 675 +++++++++++++++++++++++++++++++++++++ README.md | 8 + docker-compose-example.yml | 12 + nginx.conf | 20 ++ public/img/favicon.png | Bin 0 -> 50230 bytes public/index.html | 153 +++++++++ public/script/main.js | 55 +++ public/style/main.css | 288 ++++++++++++++++ 10 files changed, 1229 insertions(+) create mode 100644 .gitignore create mode 100644 Dockerfile create mode 100644 LICENSE.txt create mode 100644 README.md create mode 100644 docker-compose-example.yml create mode 100644 nginx.conf create mode 100644 public/img/favicon.png create mode 100644 public/index.html create mode 100644 public/script/main.js create mode 100644 public/style/main.css diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..cf1a6f6 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +certs/ +docker-compose*.yml +!docker-compose-example.yml diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..cd6c348 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,15 @@ +FROM nginx:stable-alpine3.17 + +# set working directory +WORKDIR /usr/share/nginx/arimelody/ + +# copy nginx config +COPY nginx.conf /etc/nginx/conf.d/default.conf + +# copy static files +COPY public /usr/share/nginx/arimelody + +EXPOSE 443 + +# start nginx in the foreground so logs appear in docker +CMD ["nginx", "-g", "daemon off;"]; diff --git a/LICENSE.txt b/LICENSE.txt new file mode 100644 index 0000000..53d1f3d --- /dev/null +++ b/LICENSE.txt @@ -0,0 +1,675 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. + diff --git a/README.md b/README.md new file mode 100644 index 0000000..0d033aa --- /dev/null +++ b/README.md @@ -0,0 +1,8 @@ +# arimelody.me +home to your local SPACEGIRL 💫 + +--- + +this is a simple-ish website, built up from a foundation that used to be merely a placeholder page (which i have no git history for because i thought really far ahead :3) + +eventually this will be built up with a custom backend (likely written in rust or go, whichever i have the most patience for ;p) to support all sorts of other fancy server-side features i want to eventually implement! diff --git a/docker-compose-example.yml b/docker-compose-example.yml new file mode 100644 index 0000000..ffeb135 --- /dev/null +++ b/docker-compose-example.yml @@ -0,0 +1,12 @@ +version: '3.9' +services: + web: + build: . + image: arimelody-home + container_name: arimelody-home + ports: + - 443:443 + volumes: + - ./certs/arimelody.crt:/etc/nginx/ssl/arimelody.crt + - ./certs/arimelody.key:/etc/nginx/ssl/arimelody.key + restart: unless-stopped diff --git a/nginx.conf b/nginx.conf new file mode 100644 index 0000000..b181a10 --- /dev/null +++ b/nginx.conf @@ -0,0 +1,20 @@ +server { + listen 443 ssl; + server_name arimelody.me; + + ssl_protocols TLSv1.2 TLSv1.3; + + ssl_certificate /etc/nginx/ssl/arimelody.crt; + ssl_certificate_key /etc/nginx/ssl/arimelody.key; + + root /usr/share/nginx/arimelody/; + + client_max_body_size 0; + + location / { + } + + if ($scheme != "https") { + return 301 https://$server_name$request_uri; + } +} \ No newline at end of file diff --git a/public/img/favicon.png b/public/img/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..c26d36188bc174d983956384a11ab12236e62eb1 GIT binary patch literal 50230 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 z

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 literal 0 HcmV?d00001 diff --git a/public/index.html b/public/index.html new file mode 100644 index 0000000..f02f9e2 --- /dev/null +++ b/public/index.html @@ -0,0 +1,153 @@ + + + + + + + + ari melody 💫 + + + + + + + + + + + + + + + +

+ +
+ +
+

+ # hello, world! +

+ +

+ i'm ari! +
+ she/her 🏳️‍⚧️🏳️‍🌈💫🦆🇮🇪 +

+

+ creator of the infamous (but barely famous) catdance, a lovely little pride flag for + the + web, other silly + code + projects and a whole slew of content across youtube and all good music streaming platforms! +

+

+ i play around with all aspects of creative media. i like making music, writing code, + creating + videos, drawing artwork...if it can be done on a computer, i've probably tried it! + really a jack + of all trades, mastery pending. +

+

+ if you're looking to support me financially, that's so cool of you!! if you like, you + can buy + one or more of my songs over on bandcamp, so you can at least get something for your + troubles. thank + you very much either way!! 💕 +

+

+ for anything else, you can reach me for any and all communications through ari@arimelody.me. +

+

+ thanks for stopping by, and i hope you have a lovely rest of your day! +

+ +
+ +

+ ## where to find me: +

+ + +

+ ## projects i've worked on: +

+ + +

+ this site is intended to eventually replace + mellodoot.com. +

+ +
+ + *made with ♥ by ari, 2023* +
+ +
+
+ +
+ + diff --git a/public/script/main.js b/public/script/main.js new file mode 100644 index 0000000..3449c5a --- /dev/null +++ b/public/script/main.js @@ -0,0 +1,55 @@ +document.addEventListener("DOMContentLoaded", () => { + [...document.querySelectorAll("h1, h2, h3, h4, h5, h6")] + .filter((e) => e.innerText != "") + .forEach((e) => { + type_out(e); + }); + [...document.querySelectorAll("ol, ul")] + .filter((e) => e.innerText != "") + .forEach((e) => { + fill_list(e); + }); +}); + +function type_out(e) { + const text = e.innerText; + const original = e.innerHTML; + e.innerText = ""; + const delay = 25; + let chars = 0; + + function insert_char(character, parent) { + const c = document.createElement("span"); + c.innerText = character; + parent.appendChild(c); + c.classList.add("newchar"); + } + + function normalize() { + e.innerHTML = original; + } + + function increment_char() { + const newchar = text.substring(chars - 1, chars); + insert_char(newchar, e); + chars++; + if (chars <= text.length) { + setTimeout(increment_char, delay); + } else { + setTimeout(normalize, 250); + } + } + + increment_char(); +} + +function fill_list(list) { + const items = list.querySelectorAll("li a"); + items.innerText = ""; + const delay = 100; + + items.forEach((item, iter) => { + item.style.animationDelay = `${iter * delay}ms`; + item.style.animationPlayState = "playing"; + }); +} diff --git a/public/style/main.css b/public/style/main.css new file mode 100644 index 0000000..46255e2 --- /dev/null +++ b/public/style/main.css @@ -0,0 +1,288 @@ +:root { + --primary: #b7fd49; + --secondary: #f8e05b; + --tertiary: #f788fe; +} + +body { + margin: 0; + padding: 0; + background: #111; + color: #eee; + font-family: monospace; + font-size: 18px; + text-shadow: 0 0 3em, 0 0 0.2em; +} + +header { + border-bottom: 1px solid #888; +} + +#header { + width: min(calc(100% - 4rem), 720px); + height: 3em; + margin: auto; + display: flex; + flex-direction: row; + gap: 1em; + padding: 0 1em; +} + +img#header-icon { + width: 2em; + height: 2em; + margin: .5em; + display: block; +} + +#header-text { + width: 11em; + display: flex; + flex-direction: column; + justify-content: center; +} + +#header-text h1 { + margin: 0; + font-size: 1em; +} + +#header-text h2 { + height: 1.2em; + line-height: 1.2em; + margin: 0; + font-size: .8em; + color: #bbb; +} + +header ul { + margin: 0; + padding: 0; + display: flex; + flex-direction: row; + gap: .5em; + /* overflow-x: scroll; */ + align-items: center; +} + +header ul li { + list-style: none; +} + +header ul li a { + padding: .2em .5em; + border: 1px solid #65b4fd; + color: #65b4fd; + border-radius: 2px; + background-color: transparent; + transition-property: color, border-color, background-color; + transition-duration: .2s; + animation: list-item-fadein .2s forwards; + animation-delay: 0s; + opacity: 0; +} + +header ul li a.inactive { + color: #aaa; + border-color: #aaa; + cursor: default; + text-decoration: none !important; +} + +header ul li a:not(.inactive):hover { + color: #eee; + border-color: #eee; + background-color: #65b4fd; + text-decoration: none; +} + +main { + width: min(calc(100% - 4rem), 720px); + margin: auto; +} + +main h1 { + line-height: 3rem; + color: var(--primary); +} + +main h2 { + color: var(--secondary); +} + +main h3 { + color: var(--tertiary); +} + +a { + color: #65b4fd; + text-decoration: none; +} + +a:hover { + text-decoration: underline; +} + +small { + font-size: 1em; + color: #aaa; +} + +span.newchar { + animation: newchar 0.25s; +} + +@keyframes newchar { + from { + background: #fff8; + } +} + +span.hide { + display: none; +} + +h1:hover span.hide { + display: initial; + opacity: 0.1; +} + +div#me_irl { + width: fit-content; + height: fit-content; + border: 2px solid white; +} + +div#me_irl img { + display: block;https://discord.gg/PSyTZDt +} + +div#me_irl::before { + content: ""; + position: absolute; + width: 104px; + height: 104px; + transform: translate(2px, 2px); + background-image: linear-gradient(to top right, + var(--primary), + var(--secondary)); + z-index: -1; +} + +h1, +h2, +h3, +h4, +h5, +h6, +p, +small { + transition: background-color 0.1s; +} + +main h1:hover, +main h2:hover, +main h3:hover, +main h4:hover, +main h5:hover, +main h6:hover, +main p:hover, +main small:hover { + background-color: #fff2; +} + +hr { + text-align: center; + line-height: 0px; + border-width: 1px 0 0 0; + border-color: #888f; + margin: 1.5em 0; + overflow: visible; +} + +ul.links { + display: flex; + gap: 1em .5em; + flex-wrap: wrap; +} + +ul.links li { + list-style: none; +} + +ul.links li a { + padding: .2em .5em; + border: 1px solid #65b4fd; + color: #65b4fd; + border-radius: 2px; + background-color: transparent; + transition-property: color, border-color, background-color; + transition-duration: .2s; + animation: list-item-fadein .2s forwards; + animation-delay: 0s; + opacity: 0; +} + +ul.links li a:hover { + color: #eee; + border-color: #eee; + background-color: #65b4fd; + text-decoration: none; + box-shadow: 0 0 1em #65b4fd; +} + +@keyframes list-item-fadein { + from { + opacity: 1; + background: #fff8; + } + + to { + opacity: 1; + } +} + +footer { + margin: 2rem; + color: #aaa; +} + +@keyframes overlay-flicker { + from { + opacity: .5; + } + to { + opacity: .6; + } +} + +@keyframes overlay-scroll { + from { + background-position-y: 0; + } + to { + background-position-y: .2em; + } +} + +#overlay { + position: fixed; + top: 0; + left: 0; + width: 100vw; + height: 100vh; + background-image: linear-gradient(180deg, rgba(0,0,0,0) 15%, rgb(0, 0, 0) 40%, rgb(0, 0, 0) 60%, rgba(0,0,0,0) 85%); + background-size: 100vw .2em; + background-repeat: repeat; + opacity: .5; + pointer-events: none; + animation: linear .05s infinite alternate overlay-flicker; + mix-blend-mode: overlay; +} + +@media screen and (max-width: 520px) { + #header-text { + display: none; + } +} +