🔧 Start the website rewrite using Bluelib React 3
2
.gitattributes
vendored
|
@ -1,2 +0,0 @@
|
|||
build/* linguist-vendored
|
||||
docs/* linguist-vendored
|
27
.gitignore
vendored
|
@ -1,4 +1,23 @@
|
|||
node_modules
|
||||
/*.log
|
||||
.idea/
|
||||
.sentryclirc
|
||||
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
|
||||
|
||||
# dependencies
|
||||
/node_modules
|
||||
/.pnp
|
||||
.pnp.js
|
||||
|
||||
# testing
|
||||
/coverage
|
||||
|
||||
# production
|
||||
/build
|
||||
|
||||
# misc
|
||||
.DS_Store
|
||||
.env.local
|
||||
.env.development.local
|
||||
.env.test.local
|
||||
.env.production.local
|
||||
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
|
|
8
.idea/.gitignore
vendored
Normal file
|
@ -0,0 +1,8 @@
|
|||
# Default ignored files
|
||||
/shelf/
|
||||
/workspace.xml
|
||||
# Datasource local storage ignored files
|
||||
/dataSources/
|
||||
/dataSources.local.xml
|
||||
# Editor-based HTTP Client requests
|
||||
/httpRequests/
|
7
.idea/discord.xml
Normal file
|
@ -0,0 +1,7 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="DiscordProjectSettings">
|
||||
<option name="show" value="ASK" />
|
||||
<option name="description" value="" />
|
||||
</component>
|
||||
</project>
|
74
.idea/inspectionProfiles/Project_Default.xml
Normal file
|
@ -0,0 +1,74 @@
|
|||
<component name="InspectionProjectProfileManager">
|
||||
<profile version="1.0">
|
||||
<option name="myName" value="Project Default" />
|
||||
<inspection_tool class="InconsistentLineSeparators" enabled="true" level="WEAK WARNING" enabled_by_default="true" />
|
||||
<inspection_tool class="JupyterPackageInspection" enabled="true" level="ERROR" enabled_by_default="true" />
|
||||
<inspection_tool class="LessResolvedByNameOnly" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||
<inspection_tool class="LessUnresolvedMixin" enabled="true" level="ERROR" enabled_by_default="true" />
|
||||
<inspection_tool class="LessUnresolvedVariable" enabled="true" level="ERROR" enabled_by_default="true" />
|
||||
<inspection_tool class="LongLine" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
|
||||
<inspection_tool class="PoetryPackageVersion" enabled="true" level="SERVER PROBLEM" enabled_by_default="true" />
|
||||
<inspection_tool class="ProblematicWhitespace" enabled="true" level="WEAK WARNING" enabled_by_default="true" />
|
||||
<inspection_tool class="PyAbstractClassInspection" enabled="true" level="ERROR" enabled_by_default="true" />
|
||||
<inspection_tool class="PyAttributeOutsideInitInspection" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||
<inspection_tool class="PyAugmentAssignmentInspection" enabled="true" level="WEAK WARNING" enabled_by_default="true" />
|
||||
<inspection_tool class="PyBroadExceptionInspection" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
|
||||
<inspection_tool class="PyDictDuplicateKeysInspection" enabled="true" level="WEAK WARNING" enabled_by_default="true" />
|
||||
<inspection_tool class="PyDocstringTypesInspection" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||
<inspection_tool class="PyDunderSlotsInspection" enabled="true" level="ERROR" enabled_by_default="true" />
|
||||
<inspection_tool class="PyFinalInspection" enabled="true" level="ERROR" enabled_by_default="true" />
|
||||
<inspection_tool class="PyFromFutureImportInspection" enabled="true" level="ERROR" enabled_by_default="true" />
|
||||
<inspection_tool class="PyGlobalUndefinedInspection" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||
<inspection_tool class="PyInconsistentIndentationInspection" enabled="true" level="ERROR" enabled_by_default="true" />
|
||||
<inspection_tool class="PyInterpreterInspection" enabled="true" level="SERVER PROBLEM" enabled_by_default="true" />
|
||||
<inspection_tool class="PyMandatoryEncodingInspection" enabled="true" level="WEAK WARNING" enabled_by_default="true" />
|
||||
<inspection_tool class="PyMethodMayBeStaticInspection" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
|
||||
<inspection_tool class="PyMissingTypeHintsInspection" enabled="true" level="WEAK WARNING" enabled_by_default="true" />
|
||||
<inspection_tool class="PyNestedDecoratorsInspection" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||
<inspection_tool class="PyNoneFunctionAssignmentInspection" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||
<inspection_tool class="PyPackageRequirementsInspection" enabled="false" level="ERROR" enabled_by_default="false">
|
||||
<option name="ignoredPackages">
|
||||
<value>
|
||||
<list size="0" />
|
||||
</value>
|
||||
</option>
|
||||
</inspection_tool>
|
||||
<inspection_tool class="PyPep8NamingInspection" enabled="true" level="WEAK WARNING" enabled_by_default="true">
|
||||
<option name="ignoredErrors">
|
||||
<list>
|
||||
<option value="N806" />
|
||||
</list>
|
||||
</option>
|
||||
</inspection_tool>
|
||||
<inspection_tool class="PyRelativeImportInspection" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||
<inspection_tool class="PyReturnFromInitInspection" enabled="true" level="ERROR" enabled_by_default="true" />
|
||||
<inspection_tool class="PySetFunctionToLiteralInspection" enabled="true" level="WEAK WARNING" enabled_by_default="true" />
|
||||
<inspection_tool class="PyStringFormatInspection" enabled="true" level="ERROR" enabled_by_default="true" />
|
||||
<inspection_tool class="PyTrailingSemicolonInspection" enabled="true" level="WEAK WARNING" enabled_by_default="true" />
|
||||
<inspection_tool class="PyUnnecessaryBackslashInspection" enabled="true" level="WEAK WARNING" enabled_by_default="true" />
|
||||
<inspection_tool class="PyUnresolvedReferencesInspection" enabled="true" level="WARNING" enabled_by_default="true">
|
||||
<option name="ignoredIdentifiers">
|
||||
<list>
|
||||
<option value="pydantic.main.BaseModel.__root__" />
|
||||
<option value="telethon.client.telegramclient.TelegramClient.__await__" />
|
||||
<option value="royalnet.engineer.pda.implementations.base.PDAImplementation.register_partial" />
|
||||
<option value="royalnet.engineer.pda.implementations.base.PDAImplementation.register_partialcommand" />
|
||||
<option value="royalnet.engineer.pda.implementations.base.PDAImplementation.register_conversation" />
|
||||
</list>
|
||||
</option>
|
||||
</inspection_tool>
|
||||
<inspection_tool class="RegExpAnonymousGroup" enabled="true" level="WEAK WARNING" enabled_by_default="true" />
|
||||
<inspection_tool class="RegExpEscapedMetaCharacter" enabled="true" level="WEAK WARNING" enabled_by_default="true" />
|
||||
<inspection_tool class="RegExpOctalEscape" enabled="true" level="WEAK WARNING" enabled_by_default="true" />
|
||||
<inspection_tool class="RegExpRedundantEscape" enabled="true" level="WEAK WARNING" enabled_by_default="true" />
|
||||
<inspection_tool class="RegExpRedundantNestedCharacterClass" enabled="true" level="WEAK WARNING" enabled_by_default="true" />
|
||||
<inspection_tool class="RegExpRepeatedSpace" enabled="true" level="WEAK WARNING" enabled_by_default="true" />
|
||||
<inspection_tool class="RegExpUnexpectedAnchor" enabled="true" level="ERROR" enabled_by_default="true" />
|
||||
<inspection_tool class="ShellCheck" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||
<inspection_tool class="SpellCheckingInspection" enabled="false" level="TYPO" enabled_by_default="false">
|
||||
<option name="processCode" value="true" />
|
||||
<option name="processLiterals" value="true" />
|
||||
<option name="processComments" value="true" />
|
||||
</inspection_tool>
|
||||
</profile>
|
||||
</component>
|
9
.idea/misc.xml
Normal file
|
@ -0,0 +1,9 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ClojureProjectResolveSettings">
|
||||
<currentScheme>IDE</currentScheme>
|
||||
</component>
|
||||
<component name="ProjectRootManager">
|
||||
<output url="file://$PROJECT_DIR$/out" />
|
||||
</component>
|
||||
</project>
|
8
.idea/modules.xml
Normal file
|
@ -0,0 +1,8 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectModuleManager">
|
||||
<modules>
|
||||
<module fileurl="file://$PROJECT_DIR$/.idea/steffoweb.iml" filepath="$PROJECT_DIR$/.idea/steffoweb.iml" />
|
||||
</modules>
|
||||
</component>
|
||||
</project>
|
|
@ -1,5 +1,5 @@
|
|||
<component name="ProjectRunConfigurationManager">
|
||||
<configuration default="false" name="Start development server" type="js.build_tools.npm">
|
||||
<configuration default="false" name="run" type="js.build_tools.npm" nameIsGenerated="true">
|
||||
<package-json value="$PROJECT_DIR$/package.json" />
|
||||
<command value="run" />
|
||||
<scripts>
|
9
.idea/steffoweb.iml
Normal file
|
@ -0,0 +1,9 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="JAVA_MODULE" version="4">
|
||||
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
||||
<exclude-output />
|
||||
<content url="file://$MODULE_DIR$" />
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
</component>
|
||||
</module>
|
6
.idea/vcs.xml
Normal file
|
@ -0,0 +1,6 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="VcsDirectoryMappings">
|
||||
<mapping directory="" vcs="Git" />
|
||||
</component>
|
||||
</project>
|
|
@ -1,12 +0,0 @@
|
|||
<component name="ProjectRunConfigurationManager">
|
||||
<configuration default="false" name="Build, publish and submit everything" type="js.build_tools.npm">
|
||||
<package-json value="$PROJECT_DIR$/package.json" />
|
||||
<command value="run" />
|
||||
<scripts>
|
||||
<script value="all" />
|
||||
</scripts>
|
||||
<node-interpreter value="project" />
|
||||
<envs />
|
||||
<method v="2" />
|
||||
</configuration>
|
||||
</component>
|
25
README.md
|
@ -1,28 +1,21 @@
|
|||
# ![Steffoweb](src/assets/opengraph.png)
|
||||
# ![Steffoweb](public/opengraph.png)
|
||||
|
||||
My personal website in [Preact](https://preactjs.com/).
|
||||
|
||||
![maintenance: actively-developed](https://img.shields.io/badge/maintenance-actively--developed-brightgreen)
|
||||
My personal website in [React](https://reactjs.org/).
|
||||
|
||||
## Developing
|
||||
|
||||
### Running a local copy
|
||||
|
||||
If you want to run a local copy of the website, ensure [the latest `nodejs`](https://nodejs.org/it/) and `npm` are installed on your machine then run:
|
||||
If for whatever reason you want to run a local copy of the website, ensure [the latest `nodejs`](https://nodejs.org/it/) and `yarn` are installed on your
|
||||
machine, then run:
|
||||
|
||||
```bash
|
||||
git clone https://github.com/Steffo99/uni.steffo.eu.git
|
||||
cd "uni.steffo.eu"
|
||||
npm install --dev
|
||||
npm run start
|
||||
git clone https://github.com/Steffo99/steffoweb.git
|
||||
cd "steffoweb"
|
||||
yarn
|
||||
yarn run start
|
||||
```
|
||||
|
||||
### Updating the website
|
||||
|
||||
To update the published website, bump up the version number in the package.json and run in the previously cloned folder:
|
||||
|
||||
```bash
|
||||
npm run all
|
||||
```
|
||||
|
||||
[GitHub Pages](https://pages.github.com/) will do the rest.
|
||||
The website will automatically update based on the `master` branch.
|
|
@ -1 +0,0 @@
|
|||
steffo.eu
|
|
@ -1 +0,0 @@
|
|||
steffo.eu
|
Before Width: | Height: | Size: 24 KiB |
|
@ -1,15 +0,0 @@
|
|||
{
|
||||
"name": "Steffo's website",
|
||||
"short_name": "Steffoweb",
|
||||
"start_url": "/",
|
||||
"display": "browser",
|
||||
"orientation": "portrait",
|
||||
"background_color": "#0d193b",
|
||||
"theme_color": "#1c2b4f",
|
||||
"icons": [
|
||||
{
|
||||
"src": "/favicon.ico",
|
||||
"type": "image/x-icon"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -1 +0,0 @@
|
|||
/*! For license information please see bundle.ead42.esm.js.LICENSE.txt */
|
|
@ -1 +0,0 @@
|
|||
{"version":3,"sources":[],"names":[],"mappings":"","file":"bundle.ead42.esm.js","sourceRoot":""}
|
|
@ -1,16 +0,0 @@
|
|||
/*! *****************************************************************************
|
||||
Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
Licensed under the Apache License, Version 2.0 (the "License"); you may not use
|
||||
this file except in compliance with the License. You may obtain a copy of the
|
||||
License at http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
|
||||
WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
|
||||
MERCHANTABLITY OR NON-INFRINGEMENT.
|
||||
|
||||
See the Apache Version 2.0 License for specific language governing permissions
|
||||
and limitations under the License.
|
||||
***************************************************************************** */
|
||||
|
||||
/*! showdown v 1.9.1 - 02-11-2019 */
|
BIN
docs/favicon.ico
Before Width: | Height: | Size: 24 KiB |
|
@ -1 +0,0 @@
|
|||
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>steffoweb</title><meta name="viewport" content="width=device-width,initial-scale=1"><meta property="og:image" content="/assets/opengraph.png"><link href="/src/assets/favicon.ico" rel="icon" type="image/x-icon"><link href="/src/assets/favicon.ico" rel="shortcut icon" type="image/x-icon"><style>body{background-color:#0d193b}</style><link rel="manifest" href="/manifest.json"><link rel="shortcut icon" href="/favicon.ico"><link href="/bundle.d9419.css" rel="preload" as="style"><noscript><link rel="stylesheet" href="/bundle.d9419.css"></noscript><script>function $loadcss(u,m,l){(l=document.createElement('link')).rel='stylesheet';l.href=u;document.head.appendChild(l)}$loadcss("/bundle.d9419.css")</script></head><body><script type="__PREACT_CLI_DATA__">{"preRenderData":{"url":"/"}}</script><script nomodule="">!function(){var e=document,t=e.createElement("script");if(!("noModule"in t)&&"onbeforeload"in t){var n=!1;e.addEventListener("beforeload",function(e){if(e.target===t)n=!0;else if(!e.target.hasAttribute("nomodule")||!n)return;e.preventDefault()},!0),t.type="module",t.src=".",e.head.appendChild(t),t.remove()}}();</script><script crossorigin="anonymous" src="/bundle.ead42.esm.js" type="module"></script><script nomodule="" src="/polyfills.f79b3.js"></script><script nomodule="" defer="defer" src="/bundle.fbd11.js"></script></body></html>
|
|
@ -1,15 +0,0 @@
|
|||
{
|
||||
"name": "Steffo's website",
|
||||
"short_name": "Steffoweb",
|
||||
"start_url": "/",
|
||||
"display": "browser",
|
||||
"orientation": "portrait",
|
||||
"background_color": "#0d193b",
|
||||
"theme_color": "#1c2b4f",
|
||||
"icons": [
|
||||
{
|
||||
"src": "/favicon.ico",
|
||||
"type": "image/x-icon"
|
||||
}
|
||||
]
|
||||
}
|
Before Width: | Height: | Size: 214 KiB |
|
@ -1 +0,0 @@
|
|||
{"version":3,"sources":[],"names":[],"mappings":"","file":"polyfills.24554.esm.js","sourceRoot":""}
|
|
@ -1 +0,0 @@
|
|||
{"url":"/"}
|
|
@ -1 +0,0 @@
|
|||
{"/":{"bundle.d9419.css":{"type":"style","weight":1},"bundle.ead42.esm.js":{"type":"script","weight":1}},"/Home":{"bundle.d9419.css":{"type":"style","weight":1},"bundle.ead42.esm.js":{"type":"script","weight":1},"route-Home.chunk.57d0a.esm.js":{"type":"script","weight":0.9},"route-Home.chunk.fec23.css":{"type":"style","weight":0.9}}}
|
|
@ -1,2 +0,0 @@
|
|||
(window.webpackJsonp=window.webpackJsonp||[]).push([[2],{"5aVd":function(l){l.exports={menulist:"menulist__2Cmnq"}},T2GU:function(l,e,t){"use strict";(function(l){var n=t("5aVd"),i=t.n(n);e.a=function(e){return l("ul",{class:i.a.menulist},e.children)}}).call(this,t("hosL").h)},bJge:function(l,e,t){"use strict";t.r(e),function(l){t("mVAi");var n=t("mbOI"),i=t("YNhk"),a=t("T2GU"),u=t("GAEk"),o=t("WOcO");e.default=function(){return l("div",null,l(n.f,null,l(n.e,{title:"About me"},l("p",null,"I am ",l("b",null,"Stefano Pigozzi"),", a Computer Science student at ",l(i.a,{href:"http://unimore.it/"},"Unimore"),"!"),l("p",null,"In my free time, I enjoy ",l("b",null,"programming"),", ",l("b",null,"playing videogames")," and eating ",l("b",null,"gelato"),"!"))),l(n.f,null,l(n.e,{title:"My projects"},l(a.a,null,l("li",null,l(i.a,{href:"https://github.com/Steffo99/greed"},"greed"),l("small",null,", a customizable, multilanguage Telegram shop bot with Payments support")),l("li",null,l(i.a,{href:"https://github.com/Steffo99/royalnet"},"royalnet"),l("small",null,", a multipurpose bot and web framework for internet communities")),l("li",null,l(i.a,{href:"https://github.com/Steffo99/lihzahrd"},"lihzahrd")," ",l("small",null,"and")," ",l(i.a,{href:"https://github.com/Steffo99/flyingsnake"},"flyingsnake"),l("small",null,", Terraria utilities for Python")),l("li",null,l(i.a,{href:"https://github.com/Steffo99/bluelib"},"bluelib"),l("small",null,", the library my websites are based on")),l("li",null,l("small",null,"and many more on ",l(i.a,{href:"https://github.com/Steffo99"},"my GitHub profile"),"!")))),l(n.e,{title:"My accounts"},l(a.a,null,l("li",null,l(i.a,{rel:"me",href:"https://github.com/Steffo99"},"Steffo99")),l("li",null,l(i.a,{rel:"me",href:"mailto:ste.pigozzi@gmail.com"},"ste.pigozzi@gmail.com")),l("li",null,l(i.a,{rel:"me",href:"https://t.me/Steffo"},"@Steffo")),l("li",null,l(i.a,{rel:"me",href:"https://discordapp.com/channels/@me/77703771181817856/"},"Steffo#4036")),l("li",null,l(i.a,{rel:"me",href:"https://steamcommunity.com/id/steffo1999/"},"Steffo"))))),l(n.f,null,l(n.e,{title:"My websites"},l(a.a,null,l("li",null,l(i.a,{href:"https://uni.steffo.eu"},"Appuntiweb"),l("small",null,", where I publish my university notes")),l("li",null,l(i.a,{href:"https://ryg.steffo.eu"},"RYGweb"),l("small",null,", the website of a community I manage")))),l(n.e,{title:"My achievements"},l(a.a,null,l("li",null,l(n.a,{href:"https://ldjam.com/events/ludum-dare/46/keep-everything-alive-1"},l(u.a,{icon:o.b})," 9th place"),l("small",null," in the ",l("i",null,"Theme")," category at the")," ",l(i.a,{href:"https://en.wikipedia.org/wiki/Ludum_Dare"},"Ludum Dare 46")," ",l("small",null,"game jam")),l("li",null,l("span",{style:"color: lightgray"},l(u.a,{icon:o.o})," Silver medal"),l("small",null," at "),l(i.a,{href:"https://it.wikipedia.org/wiki/Olimpiadi_europee_delle_scienze"},"EUSO 2016"))))))}}.call(this,t("hosL").h)},mVAi:function(l){l.exports={container:"container__1UG8d",content:"content__bcm18"}}}]);
|
||||
//# sourceMappingURL=route-Home.chunk.57d0a.esm.js.map
|
|
@ -1 +0,0 @@
|
|||
{"version":3,"sources":[],"names":[],"mappings":"","file":"route-Home.chunk.57d0a.esm.js","sourceRoot":""}
|
|
@ -1,2 +0,0 @@
|
|||
(window.webpackJsonp=window.webpackJsonp||[]).push([[2],{"5aVd":function(l){l.exports={menulist:"menulist__2Cmnq"}},T2GU:function(l,e,t){"use strict";(function(l){var n=t("5aVd"),i=t.n(n);e.a=function(e){return l("ul",{class:i.a.menulist},e.children)}}).call(this,t("hosL").h)},bJge:function(l,e,t){"use strict";t.r(e),function(l){t("mVAi");var n=t("mbOI"),i=t("YNhk"),a=t("T2GU"),u=t("GAEk"),o=t("WOcO");e.default=function(){return l("div",null,l(n.f,null,l(n.e,{title:"About me"},l("p",null,"I am ",l("b",null,"Stefano Pigozzi"),", a Computer Science student at ",l(i.a,{href:"http://unimore.it/"},"Unimore"),"!"),l("p",null,"In my free time, I enjoy ",l("b",null,"programming"),", ",l("b",null,"playing videogames")," and eating ",l("b",null,"gelato"),"!"))),l(n.f,null,l(n.e,{title:"My projects"},l(a.a,null,l("li",null,l(i.a,{href:"https://github.com/Steffo99/greed"},"greed"),l("small",null,", a customizable, multilanguage Telegram shop bot with Payments support")),l("li",null,l(i.a,{href:"https://github.com/Steffo99/royalnet"},"royalnet"),l("small",null,", a multipurpose bot and web framework for internet communities")),l("li",null,l(i.a,{href:"https://github.com/Steffo99/lihzahrd"},"lihzahrd")," ",l("small",null,"and")," ",l(i.a,{href:"https://github.com/Steffo99/flyingsnake"},"flyingsnake"),l("small",null,", Terraria utilities for Python")),l("li",null,l(i.a,{href:"https://github.com/Steffo99/bluelib"},"bluelib"),l("small",null,", the library my websites are based on")),l("li",null,l("small",null,"and many more on ",l(i.a,{href:"https://github.com/Steffo99"},"my GitHub profile"),"!")))),l(n.e,{title:"My accounts"},l(a.a,null,l("li",null,l(i.a,{rel:"me",href:"https://github.com/Steffo99"},"Steffo99")),l("li",null,l(i.a,{rel:"me",href:"mailto:ste.pigozzi@gmail.com"},"ste.pigozzi@gmail.com")),l("li",null,l(i.a,{rel:"me",href:"https://t.me/Steffo"},"@Steffo")),l("li",null,l(i.a,{rel:"me",href:"https://discordapp.com/channels/@me/77703771181817856/"},"Steffo#4036")),l("li",null,l(i.a,{rel:"me",href:"https://steamcommunity.com/id/steffo1999/"},"Steffo"))))),l(n.f,null,l(n.e,{title:"My websites"},l(a.a,null,l("li",null,l(i.a,{href:"https://uni.steffo.eu"},"Appuntiweb"),l("small",null,", where I publish my university notes")),l("li",null,l(i.a,{href:"https://ryg.steffo.eu"},"RYGweb"),l("small",null,", the website of a community I manage")))),l(n.e,{title:"My achievements"},l(a.a,null,l("li",null,l(n.a,{href:"https://ldjam.com/events/ludum-dare/46/keep-everything-alive-1"},l(u.a,{icon:o.b})," 9th place"),l("small",null," in the ",l("i",null,"Theme")," category at the")," ",l(i.a,{href:"https://en.wikipedia.org/wiki/Ludum_Dare"},"Ludum Dare 46")," ",l("small",null,"game jam")),l("li",null,l("span",{style:"color: lightgray"},l(u.a,{icon:o.o})," Silver medal"),l("small",null," at "),l(i.a,{href:"https://it.wikipedia.org/wiki/Olimpiadi_europee_delle_scienze"},"EUSO 2016"))))))}}.call(this,t("hosL").h)},mVAi:function(l){l.exports={container:"container__1UG8d",content:"content__bcm18"}}}]);
|
||||
//# sourceMappingURL=route-Home.chunk.57d0a.js.map
|
|
@ -1 +0,0 @@
|
|||
.container__1UG8d{display:-ms-flexbox;display:flex;-ms-flex-line-pack:center;align-content:center;-ms-flex-pack:center;justify-content:center}.content__bcm18{margin-top:auto;margin-bottom:auto}.menulist__2Cmnq{font-size:large}.menulist__2Cmnq small{font-size:small}
|
|
@ -1,21 +0,0 @@
|
|||
self.addEventListener('fetch', function(event) {
|
||||
var isPostRequest = event.request.method === 'POST';
|
||||
event.respondWith(
|
||||
fetch(event.request).catch(function(err) {
|
||||
if (err instanceof TypeError) {
|
||||
if (isPostRequest) {
|
||||
// eslint-disable-next-line
|
||||
console.log(
|
||||
'⚛️Preact CLI development tip: A POST request just failed. This might fail for your users as well due to a network error. It may be worth exploring the backgroundSync API.'
|
||||
);
|
||||
} else {
|
||||
// eslint-disable-next-line
|
||||
console.log(
|
||||
'⚛️Preact CLI development tip: A GET request just failed. This might fail for your users as well due to a network error. It may be worth adding runtimeCaching to your Service Worker.'
|
||||
);
|
||||
}
|
||||
}
|
||||
return err;
|
||||
})
|
||||
);
|
||||
});
|
13096
package-lock.json
generated
91
package.json
|
@ -1,56 +1,43 @@
|
|||
{
|
||||
"name": "steffoweb",
|
||||
"version": "1.0.0",
|
||||
"license": "AGPL-3.0-or-later",
|
||||
"private": false,
|
||||
|
||||
"repository": "https://github.com/Steffo99/steffoweb",
|
||||
|
||||
"files": [
|
||||
"src/**/*"
|
||||
],
|
||||
"source": "src/index.js",
|
||||
"directories": {
|
||||
"lib": "src"
|
||||
},
|
||||
|
||||
"scripts": {
|
||||
"start": "preact watch --template src/template.html",
|
||||
"build": "echo \"Building the package...\" && preact build --template src/template.html --no-prerender --dest docs && git add docs",
|
||||
"github": "echo \"Publishing to GitHub...\" && git add . && cross-env-shell git commit -m \"$npm_package_version\" && git push && cross-env-shell hub release create -m \"$npm_package_version\" \"$npm_package_version\"",
|
||||
"sentry": "echo \"Sending data to Sentry...\" && cross-env-shell sentry-cli releases set-commits \"$npm_package_version\" --auto && cross-env-shell sentry-cli releases deploys \"$npm_package_version\" new --env production -n \"gh-pages\"",
|
||||
"all": "npm run -s build && npm run -s github && npm publish && npm run -s sentry"
|
||||
},
|
||||
|
||||
"devDependencies": {
|
||||
"@sentry/webpack-plugin": "^1.11.1",
|
||||
"cross-env": "^7.0.2",
|
||||
"preact-cli": "^3.0.0-rc.14"
|
||||
},
|
||||
|
||||
"name": "@steffo/steffoweb",
|
||||
"version": "3.0.0",
|
||||
"private": true,
|
||||
"dependencies": {
|
||||
"@fortawesome/fontawesome-svg-core": "^1.2.29",
|
||||
"@fortawesome/free-brands-svg-icons": "^5.13.1",
|
||||
"@fortawesome/free-regular-svg-icons": "^5.13.1",
|
||||
"@fortawesome/free-solid-svg-icons": "^5.13.1",
|
||||
"@fortawesome/react-fontawesome": "^0.1.11",
|
||||
"@sentry/browser": "^5.19.0",
|
||||
"@sentry/integrations": "^5.19.0",
|
||||
"bluelib": "0.15.2",
|
||||
"chart.js": "^2.9.3",
|
||||
"css-loader": "^3.6.0",
|
||||
"file-loader": "^5.1.0",
|
||||
"history": "^4.10.1",
|
||||
"less": "^3.11.3",
|
||||
"less-loader": "^5.0.0",
|
||||
"path-browserify": "^1.0.1",
|
||||
"preact": "^10.4.5",
|
||||
"preact-render-to-string": "^5.1.9",
|
||||
"preact-router": "^3.2.1",
|
||||
"process": "^0.11.10",
|
||||
"react-chartjs-2": "^2.9.0",
|
||||
"react-markdown": "^4.3.1",
|
||||
"react-simplemde-editor": "^4.1.0",
|
||||
"style-loader": "^1.1.4"
|
||||
"@steffo/bluelib-react": "^3.0.4",
|
||||
"react": "^17.0.2",
|
||||
"react-dom": "^17.0.2",
|
||||
"react-scripts": "4.0.3",
|
||||
"typescript": "^4.1.2",
|
||||
"web-vitals": "^1.0.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/jest": "^26.0.15",
|
||||
"@types/node": "^12.0.0",
|
||||
"@types/react": "^17.0.0",
|
||||
"@types/react-dom": "^17.0.0"
|
||||
},
|
||||
"scripts": {
|
||||
"start": "react-scripts start",
|
||||
"build": "react-scripts build",
|
||||
"test": "react-scripts test",
|
||||
"eject": "react-scripts eject"
|
||||
},
|
||||
"eslintConfig": {
|
||||
"extends": [
|
||||
"react-app",
|
||||
"react-app/jest"
|
||||
]
|
||||
},
|
||||
"browserslist": {
|
||||
"production": [
|
||||
">0.2%",
|
||||
"not dead",
|
||||
"not op_mini all"
|
||||
],
|
||||
"development": [
|
||||
"last 1 chrome version",
|
||||
"last 1 firefox version",
|
||||
"last 1 safari version"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,74 +0,0 @@
|
|||
import SentryCliPlugin from "@sentry/webpack-plugin";
|
||||
|
||||
const DefinePlugin = require("webpack/lib/DefinePlugin");
|
||||
const ProvidePlugin = require("webpack/lib/ProvidePlugin");
|
||||
|
||||
|
||||
export default function (config, env, helpers) {
|
||||
// noinspection JSUnresolvedVariable
|
||||
config.resolve.alias["react"] = "preact/compat";
|
||||
// noinspection JSUnresolvedVariable
|
||||
config.resolve.alias["react-dom"] = "preact/compat";
|
||||
// noinspection JSUnresolvedVariable
|
||||
config.resolve.alias["path"] = "path-browserify";
|
||||
|
||||
config.module.rules.push(
|
||||
{
|
||||
test: /\.nojekyll$/,
|
||||
loader: 'file-loader',
|
||||
options: {
|
||||
name: '.nojekyll'
|
||||
}
|
||||
}
|
||||
);
|
||||
config.module.rules.push(
|
||||
{
|
||||
test: /CNAME$/,
|
||||
loader: 'file-loader',
|
||||
options: {
|
||||
name: 'CNAME'
|
||||
}
|
||||
}
|
||||
);
|
||||
config.module.rules.push(
|
||||
{
|
||||
test: /favicon\.ico$/,
|
||||
loader: 'file-loader',
|
||||
options: {
|
||||
name: 'favicon.ico'
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
config.plugins[16].patterns.shift();
|
||||
config.plugins[16].patterns.shift();
|
||||
config.plugins[16].patterns.push({
|
||||
from: "assets",
|
||||
to: ""
|
||||
});
|
||||
|
||||
config.plugins.push(
|
||||
new DefinePlugin({"process.env.RELEASE": `"${process.env.npm_package_version}"`})
|
||||
);
|
||||
|
||||
config.plugins.push(
|
||||
new ProvidePlugin({"process": "process/browser"})
|
||||
);
|
||||
|
||||
if (env.production) {
|
||||
config.plugins.push(
|
||||
new SentryCliPlugin({
|
||||
include: './docs',
|
||||
ignoreFile: ".gitignore",
|
||||
configFile: '.sentryclirc',
|
||||
release: process.env.npm_package_version,
|
||||
})
|
||||
)
|
||||
}
|
||||
|
||||
// https://github.com/preactjs/preact-cli/issues/710
|
||||
let critters = helpers.getPluginsByName(config, 'Critters')[0];
|
||||
if (critters) {
|
||||
critters.plugin.options.preload = 'js' // or some other option
|
||||
}
|
||||
};
|
BIN
public/favicon.ico
Normal file
After Width: | Height: | Size: 3.8 KiB |
43
public/index.html
Normal file
|
@ -0,0 +1,43 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<link rel="icon" href="%PUBLIC_URL%/favicon.ico" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<meta name="theme-color" content="#000000" />
|
||||
<meta
|
||||
name="description"
|
||||
content="Web site created using create-react-app"
|
||||
/>
|
||||
<link rel="apple-touch-icon" href="%PUBLIC_URL%/logo192.png" />
|
||||
<!--
|
||||
manifest.json provides metadata used when your web app is installed on a
|
||||
user's mobile device or desktop. See https://developers.google.com/web/fundamentals/web-app-manifest/
|
||||
-->
|
||||
<link rel="manifest" href="%PUBLIC_URL%/manifest.json" />
|
||||
<!--
|
||||
Notice the use of %PUBLIC_URL% in the tags above.
|
||||
It will be replaced with the URL of the `public` folder during the build.
|
||||
Only files inside the `public` folder can be referenced from the HTML.
|
||||
|
||||
Unlike "/favicon.ico" or "favicon.ico", "%PUBLIC_URL%/favicon.ico" will
|
||||
work correctly both with client-side routing and a non-root public URL.
|
||||
Learn how to configure a non-root public URL by running `npm run build`.
|
||||
-->
|
||||
<title>React App</title>
|
||||
</head>
|
||||
<body>
|
||||
<noscript>You need to enable JavaScript to run this app.</noscript>
|
||||
<div id="root"></div>
|
||||
<!--
|
||||
This HTML file is a template.
|
||||
If you open it directly in the browser, you will see an empty page.
|
||||
|
||||
You can add webfonts, meta tags, or analytics to this file.
|
||||
The build step will place the bundled scripts into the <body> tag.
|
||||
|
||||
To begin the development, run `npm start` or `yarn start`.
|
||||
To create a production bundle, use `npm run build` or `yarn build`.
|
||||
-->
|
||||
</body>
|
||||
</html>
|
BIN
public/logo192.png
Normal file
After Width: | Height: | Size: 5.2 KiB |
BIN
public/logo512.png
Normal file
After Width: | Height: | Size: 9.4 KiB |
25
public/manifest.json
Normal file
|
@ -0,0 +1,25 @@
|
|||
{
|
||||
"short_name": "Steffoweb",
|
||||
"name": "Steffo's website",
|
||||
"icons": [
|
||||
{
|
||||
"src": "favicon.ico",
|
||||
"sizes": "64x64 32x32 24x24 16x16",
|
||||
"type": "image/x-icon"
|
||||
},
|
||||
{
|
||||
"src": "logo192.png",
|
||||
"type": "image/png",
|
||||
"sizes": "192x192"
|
||||
},
|
||||
{
|
||||
"src": "logo512.png",
|
||||
"type": "image/png",
|
||||
"sizes": "512x512"
|
||||
}
|
||||
],
|
||||
"start_url": ".",
|
||||
"display": "browser",
|
||||
"theme_color": "#0d193b",
|
||||
"background_color": "#0d193b"
|
||||
}
|
Before Width: | Height: | Size: 214 KiB After Width: | Height: | Size: 214 KiB |
|
@ -1 +0,0 @@
|
|||
[{"timestamp":1598981154329,"files":[{"filename":"sw-esm.js","previous":8482,"size":8482,"diff":0},{"filename":"sw.js","previous":8478,"size":8478,"diff":0},{"filename":"bundle.d9419.css","previous":2416,"size":2416,"diff":0},{"filename":"bundle.*****.esm.js","previous":385175,"size":385120,"diff":-55},{"filename":"polyfills.*****.esm.js","previous":2090,"size":2090,"diff":0},{"filename":"route-Home.chunk.fec23.css","previous":172,"size":172,"diff":0},{"filename":"route-Home.chunk.*****.esm.js","previous":1244,"size":1244,"diff":0},{"filename":"bundle.82d0f.js","previous":385723,"size":0,"diff":-385723},{"filename":"polyfills.51c23.js","previous":2090,"size":0,"diff":-2090},{"filename":"route-Home.chunk.57d0a.js","previous":1241,"size":1241,"diff":0},{"filename":"bundle.fbd11.js","previous":0,"size":385639,"diff":385639},{"filename":"polyfills.f79b3.js","previous":0,"size":2091,"diff":2091}]},{"timestamp":1598833793392,"files":[{"filename":"sw-esm.js","previous":741,"size":8482,"diff":7741},{"filename":"sw.js","previous":738,"size":8478,"diff":7740},{"filename":"bundle.fd797.css","previous":1854,"size":0,"diff":-1854},{"filename":"route-Home.chunk.654b0.esm.js","previous":332,"size":0,"diff":-332},{"filename":"route-Home.chunk.654b0.js","previous":330,"size":0,"diff":-330},{"filename":"bundle.28643.esm.js","previous":365850,"size":0,"diff":-365850},{"filename":"polyfills.260b8.esm.js","previous":2090,"size":0,"diff":-2090},{"filename":"bundle.eed59.js","previous":365997,"size":0,"diff":-365997},{"filename":"polyfills.ce45e.js","previous":2090,"size":0,"diff":-2090},{"filename":"bundle.d9419.css","previous":0,"size":2416,"diff":2416},{"filename":"bundle.*****.esm.js","previous":0,"size":385175,"diff":385175},{"filename":"polyfills.*****.esm.js","previous":0,"size":2090,"diff":2090},{"filename":"route-Home.chunk.fec23.css","previous":0,"size":172,"diff":172},{"filename":"route-Home.chunk.*****.esm.js","previous":0,"size":1244,"diff":1244},{"filename":"bundle.82d0f.js","previous":0,"size":385723,"diff":385723},{"filename":"polyfills.51c23.js","previous":0,"size":2090,"diff":2090},{"filename":"route-Home.chunk.57d0a.js","previous":0,"size":1241,"diff":1241}]},{"timestamp":1593537360450,"files":[{"filename":"sw-esm.js","previous":741,"size":741,"diff":0},{"filename":"sw.js","previous":738,"size":738,"diff":0},{"filename":"bundle.fd797.css","previous":1854,"size":1854,"diff":0},{"filename":"bundle.9206d.esm.js","previous":365849,"size":0,"diff":-365849},{"filename":"polyfills.e99f0.esm.js","previous":2090,"size":0,"diff":-2090},{"filename":"route-Home.chunk.654b0.esm.js","previous":332,"size":332,"diff":0},{"filename":"bundle.23994.js","previous":365998,"size":0,"diff":-365998},{"filename":"polyfills.5a9ad.js","previous":2091,"size":0,"diff":-2091},{"filename":"route-Home.chunk.654b0.js","previous":330,"size":330,"diff":0},{"filename":"bundle.28643.esm.js","previous":0,"size":365850,"diff":365850},{"filename":"polyfills.260b8.esm.js","previous":0,"size":2090,"diff":2090},{"filename":"bundle.eed59.js","previous":0,"size":365997,"diff":365997},{"filename":"polyfills.ce45e.js","previous":0,"size":2090,"diff":2090}]},{"timestamp":1593537127919,"files":[{"filename":"sw-esm.js","previous":0,"size":741,"diff":741},{"filename":"sw.js","previous":0,"size":738,"diff":738},{"filename":"bundle.fd797.css","previous":0,"size":1854,"diff":1854},{"filename":"bundle.9206d.esm.js","previous":0,"size":365849,"diff":365849},{"filename":"polyfills.e99f0.esm.js","previous":0,"size":2090,"diff":2090},{"filename":"route-Home.chunk.654b0.esm.js","previous":0,"size":332,"diff":332},{"filename":"bundle.23994.js","previous":0,"size":365998,"diff":365998},{"filename":"polyfills.5a9ad.js","previous":0,"size":2091,"diff":2091},{"filename":"route-Home.chunk.654b0.js","previous":0,"size":330,"diff":330}]}]
|
52
src/App.tsx
Normal file
|
@ -0,0 +1,52 @@
|
|||
import React from 'react';
|
||||
import {Bluelib, LayoutThreeCol, Heading, Chapter, Box, BringAttention as B, Anchor, ListUnordered as UL} from "@steffo/bluelib-react";
|
||||
|
||||
function App() {
|
||||
return (
|
||||
<Bluelib theme={"royalblue"}>
|
||||
<LayoutThreeCol>
|
||||
<LayoutThreeCol.Center>
|
||||
<Heading level={1}>
|
||||
<B>Steffo</B>'s website
|
||||
</Heading>
|
||||
<Chapter>
|
||||
<Box>
|
||||
<Heading level={3}>
|
||||
About me
|
||||
</Heading>
|
||||
<p>
|
||||
I'm <B>Stefano Pigozzi</B>, a Computer Science student at <Anchor href={"https://www.unimore.it"}>Unimore</Anchor>!
|
||||
</p>
|
||||
<p>
|
||||
I develop and maintain many <B>open source</B> software projects, such as websites, chat bots, libraries, videogames and mods.
|
||||
</p>
|
||||
</Box>
|
||||
</Chapter>
|
||||
<Chapter>
|
||||
<Box>
|
||||
<Heading level={3}>
|
||||
Some of my projects
|
||||
</Heading>
|
||||
<UL>
|
||||
<UL.Item>
|
||||
<Anchor href={"https://github.com/Steffo99/greed"}>Greed</Anchor>, a customizable, multilanguage Telegram shop bot with Payments support
|
||||
</UL.Item>
|
||||
<UL.Item>
|
||||
<Anchor href={"https://github.com/Steffo99/bluelib"}>Bluelib</Anchor> and <Anchor href={"https://github.com/Steffo99/bluelib-react"}>Bluelib React</Anchor>, the libraries this website is based on
|
||||
</UL.Item>
|
||||
<UL.Item>
|
||||
<Anchor href={"https://github.com/Steffo99/lihzahrd"}>Lihzahrd</Anchor>, a Python library to parse Terraria worlds, and <Anchor href={"https://github.com/Steffo99/flyingsnake"}>Flyingsnake</Anchor>, a map renderer based on it
|
||||
</UL.Item>
|
||||
<UL.Item>
|
||||
<Anchor href={"https://github.com/RYGhub/bobbot"}>Bob</Anchor>, a Discord bot that allows server members to create temporary voice channels
|
||||
</UL.Item>
|
||||
</UL>
|
||||
</Box>
|
||||
</Chapter>
|
||||
</LayoutThreeCol.Center>
|
||||
</LayoutThreeCol>
|
||||
</Bluelib>
|
||||
);
|
||||
}
|
||||
|
||||
export default App;
|
|
@ -1 +0,0 @@
|
|||
steffo.eu
|
Before Width: | Height: | Size: 24 KiB |
|
@ -1,15 +0,0 @@
|
|||
{
|
||||
"name": "Steffo's website",
|
||||
"short_name": "Steffoweb",
|
||||
"start_url": "/",
|
||||
"display": "browser",
|
||||
"orientation": "portrait",
|
||||
"background_color": "#0d193b",
|
||||
"theme_color": "#1c2b4f",
|
||||
"icons": [
|
||||
{
|
||||
"src": "/favicon.ico",
|
||||
"type": "image/x-icon"
|
||||
}
|
||||
]
|
||||
}
|
Before Width: | Height: | Size: 214 KiB |
|
@ -1,10 +0,0 @@
|
|||
import style from "./ErrorAbbr.less"
|
||||
import {faExclamationCircle} from '@fortawesome/free-solid-svg-icons';
|
||||
import {FontAwesomeIcon} from '@fortawesome/react-fontawesome';
|
||||
|
||||
export default function (props) {
|
||||
return (
|
||||
<abbr class={style.errorabbr} title={props.error.toString()}><FontAwesomeIcon
|
||||
icon={faExclamationCircle}/> {props.children}</abbr>
|
||||
);
|
||||
}
|
|
@ -1,5 +0,0 @@
|
|||
@import "../styles/constants.less";
|
||||
|
||||
.errorabbr {
|
||||
color: @red;
|
||||
}
|
|
@ -1,15 +0,0 @@
|
|||
import style from './Footer.less';
|
||||
import {concatClass} from 'bluelib';
|
||||
import Link from "./Link";
|
||||
|
||||
|
||||
export default function(props) {
|
||||
return (
|
||||
<div class={concatClass(style.footer, props.class)}>
|
||||
© {new Date().getFullYear()} - Stefano Pigozzi -
|
||||
<Link href="https://creativecommons.org/licenses/by-sa/4.0/">CC BY-SA 4.0</Link>
|
||||
-
|
||||
<Link href="https://github.com/Steffo99/uni.steffo.eu">steffo.eu {process.env.RELEASE}</Link>
|
||||
</div>
|
||||
);
|
||||
}
|
|
@ -1,8 +0,0 @@
|
|||
@import "../styles/constants.less";
|
||||
|
||||
.footer {
|
||||
margin-top: 8px;
|
||||
color: @accent;
|
||||
text-align: center;
|
||||
font-size: x-small;
|
||||
}
|
|
@ -1,97 +0,0 @@
|
|||
import ErrorAbbr from './ErrorAbbr';
|
||||
import {
|
||||
faDiscord,
|
||||
faGithub, faGoogleDrive,
|
||||
faRedditAlien,
|
||||
faSteam,
|
||||
faTelegram,
|
||||
faTwitch,
|
||||
faTwitter,
|
||||
faWikipediaW,
|
||||
faYoutube
|
||||
} from '@fortawesome/free-brands-svg-icons';
|
||||
import {
|
||||
faDownload,
|
||||
faEnvelope,
|
||||
faExternalLinkAlt,
|
||||
faLockOpen,
|
||||
faMagnet,
|
||||
faMugHot,
|
||||
faQuestion
|
||||
} from '@fortawesome/free-solid-svg-icons';
|
||||
import {FontAwesomeIcon} from '@fortawesome/react-fontawesome';
|
||||
import {BaseLink} from 'bluelib';
|
||||
|
||||
const icons = Object.freeze({
|
||||
"github.com": faGithub,
|
||||
|
||||
"en.wikipedia.org": faWikipediaW,
|
||||
"it.wikipedia.org": faWikipediaW,
|
||||
|
||||
"old.reddit.com": faRedditAlien,
|
||||
"new.reddit.com": faRedditAlien,
|
||||
"www.reddit.com": faRedditAlien,
|
||||
"reddit.com": faRedditAlien,
|
||||
|
||||
"twitch.tv": faTwitch,
|
||||
|
||||
"twitter.com": faTwitter,
|
||||
|
||||
"www.youtube.com": faYoutube,
|
||||
"youtube.com": faYoutube,
|
||||
"youtu.be": faYoutube,
|
||||
|
||||
"t.me": faTelegram,
|
||||
|
||||
"steampowered.com": faSteam,
|
||||
"steamcommunity.com": faSteam,
|
||||
|
||||
"discord.gg": faDiscord,
|
||||
"discordapp.com": faDiscord,
|
||||
"discord.com": faDiscord,
|
||||
|
||||
"ko-fi.com": faMugHot,
|
||||
|
||||
"drive.google.com": faGoogleDrive,
|
||||
|
||||
"ryg.s3.fr-par.scw.cloud": faDownload,
|
||||
});
|
||||
|
||||
export default function (props) {
|
||||
// Parse URL
|
||||
let url;
|
||||
try {
|
||||
url = new URL(props.href, window.location.href)
|
||||
} catch (e) {
|
||||
return (
|
||||
<ErrorAbbr error={e}>{props.children}</ErrorAbbr>
|
||||
);
|
||||
}
|
||||
|
||||
// Icon
|
||||
let iconEl = null;
|
||||
if (props.icon !== false) {
|
||||
let iconObj;
|
||||
|
||||
if (url.host === window.location.host) {
|
||||
iconObj = null;
|
||||
} else if (url.protocol === "http:") {
|
||||
iconObj = faLockOpen;
|
||||
} else if (url.protocol === "mailto:") {
|
||||
iconObj = faEnvelope;
|
||||
} else if (url.protocol === "https:") {
|
||||
iconObj = icons[url.host];
|
||||
if (iconObj === undefined) {
|
||||
iconObj = faExternalLinkAlt;
|
||||
}
|
||||
} else if (url.protocol === "magnet:") {
|
||||
iconObj = faMagnet;
|
||||
} else {
|
||||
iconObj = faQuestion;
|
||||
}
|
||||
|
||||
iconEl = <span><FontAwesomeIcon icon={iconObj}/> </span>;
|
||||
}
|
||||
|
||||
return <BaseLink {...props}>{iconEl}{props.children}</BaseLink>;
|
||||
}
|
|
@ -1,9 +0,0 @@
|
|||
import style from "./MenuList.less";
|
||||
|
||||
export default function(props) {
|
||||
return (
|
||||
<ul class={style.menulist}>
|
||||
{props.children}
|
||||
</ul>
|
||||
)
|
||||
}
|
|
@ -1,7 +0,0 @@
|
|||
.menulist {
|
||||
font-size: large;
|
||||
|
||||
small {
|
||||
font-size: small;
|
||||
}
|
||||
}
|
10
src/index.css
Normal file
|
@ -0,0 +1,10 @@
|
|||
body {
|
||||
margin: 0;
|
||||
min-height: 100vh;
|
||||
background-color: #0d193b;
|
||||
color: #a0ccff;
|
||||
}
|
||||
|
||||
body > * {
|
||||
min-height: 100vh;
|
||||
}
|
63
src/index.js
|
@ -1,63 +0,0 @@
|
|||
// Import debugging tools
|
||||
import {useState} from "preact/hooks";
|
||||
|
||||
let Sentry = null;
|
||||
if(process.env.NODE_ENV === "development") {
|
||||
console.debug("Initializing Preact Debugger...")
|
||||
require("preact/debug");
|
||||
}
|
||||
else if(process.env.NODE_ENV === "production") {
|
||||
console.debug("Initializing Sentry...")
|
||||
Sentry = require("@sentry/browser");
|
||||
let SentryIntegrations = require("@sentry/integrations")
|
||||
// noinspection JSUnresolvedVariable
|
||||
Sentry.init({
|
||||
// TODO: Sentry DSN goes here
|
||||
dsn: "https://05965b0d953049f493ddca387c1e4c90@o40131.ingest.sentry.io/5300173",
|
||||
release: process.env.RELEASE,
|
||||
environment: "production",
|
||||
beforeSend(event, hint) {
|
||||
if (event.exception) {
|
||||
Sentry.showReportDialog({ eventId: event.event_id });
|
||||
}
|
||||
return event;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
import Home from "./routes/Home";
|
||||
|
||||
// noinspection ES6UnusedImports
|
||||
import "bluelib/dist/index.css";
|
||||
|
||||
import {BasicContainer, CurrentPage, Bluelib, BaseLink} from 'bluelib';
|
||||
import Footer from "./components/Footer";
|
||||
import Router from "preact-router";
|
||||
import {createHashHistory} from "history";
|
||||
|
||||
// noinspection JSUnusedGlobalSymbols
|
||||
export default function (props) {
|
||||
let [currentPage, setCurrentPage] = useState(window.location.hash.substr(1));
|
||||
const onPageChange = (event) => {
|
||||
setCurrentPage(event.url);
|
||||
};
|
||||
|
||||
return (
|
||||
<CurrentPage.Provider value={currentPage}>
|
||||
|
||||
<Bluelib>
|
||||
<h1>
|
||||
<BaseLink href={"/"}>Steffo</BaseLink>'s website
|
||||
</h1>
|
||||
<BasicContainer>
|
||||
<Router history={createHashHistory()} onChange={onPageChange}>
|
||||
<Home path={"/"}/>
|
||||
</Router>
|
||||
</BasicContainer>
|
||||
<Footer/>
|
||||
</Bluelib>
|
||||
|
||||
</CurrentPage.Provider>
|
||||
);
|
||||
}
|
||||
|
17
src/index.tsx
Normal file
|
@ -0,0 +1,17 @@
|
|||
import React from 'react';
|
||||
import ReactDOM from 'react-dom';
|
||||
import './index.css';
|
||||
import App from './App';
|
||||
import reportWebVitals from './reportWebVitals';
|
||||
|
||||
ReactDOM.render(
|
||||
<React.StrictMode>
|
||||
<App />
|
||||
</React.StrictMode>,
|
||||
document.getElementById('root')
|
||||
);
|
||||
|
||||
// If you want to start measuring performance in your app, pass a function
|
||||
// to log results (for example: reportWebVitals(console.log))
|
||||
// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals
|
||||
reportWebVitals();
|
0
docs/.nojekyll → src/react-app-env.d.ts
vendored
15
src/reportWebVitals.ts
Normal file
|
@ -0,0 +1,15 @@
|
|||
import { ReportHandler } from 'web-vitals';
|
||||
|
||||
const reportWebVitals = (onPerfEntry?: ReportHandler) => {
|
||||
if (onPerfEntry && onPerfEntry instanceof Function) {
|
||||
import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {
|
||||
getCLS(onPerfEntry);
|
||||
getFID(onPerfEntry);
|
||||
getFCP(onPerfEntry);
|
||||
getLCP(onPerfEntry);
|
||||
getTTFB(onPerfEntry);
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
export default reportWebVitals;
|
|
@ -1,57 +0,0 @@
|
|||
import style from "./Home.less";
|
||||
import {BaseLink, Panel, Section} from "bluelib";
|
||||
import Link from "../components/Link";
|
||||
import MenuList from "../components/MenuList";
|
||||
import {FontAwesomeIcon} from "@fortawesome/react-fontawesome";
|
||||
import {faAward, faMedal} from "@fortawesome/free-solid-svg-icons";
|
||||
|
||||
export default function (props) {
|
||||
return (
|
||||
<div>
|
||||
<Section>
|
||||
<Panel title={"About me"}>
|
||||
<p>
|
||||
I am <b>Stefano Pigozzi</b>, a Computer Science student at <Link href={"http://unimore.it/"}>Unimore</Link>!
|
||||
</p>
|
||||
<p>
|
||||
In my free time, I enjoy <b>programming</b>, <b>playing videogames</b> and eating <b>gelato</b>!
|
||||
</p>
|
||||
</Panel>
|
||||
</Section>
|
||||
<Section>
|
||||
<Panel title={"My projects"}>
|
||||
<MenuList>
|
||||
<li><Link href={"https://github.com/Steffo99/greed"}>greed</Link><small>, a customizable, multilanguage Telegram shop bot with Payments support</small></li>
|
||||
<li><Link href={"https://github.com/Steffo99/royalnet"}>royalnet</Link><small>, a multipurpose bot and web framework for internet communities</small></li>
|
||||
<li><Link href={"https://github.com/Steffo99/lihzahrd"}>lihzahrd</Link> <small>and</small> <Link href={"https://github.com/Steffo99/flyingsnake"}>flyingsnake</Link><small>, Terraria utilities for Python</small></li>
|
||||
<li><Link href={"https://github.com/Steffo99/bluelib"}>bluelib</Link><small>, the library my websites are based on</small></li>
|
||||
<li><small>and many more on <Link href={"https://github.com/Steffo99"}>my GitHub profile</Link>!</small></li>
|
||||
</MenuList>
|
||||
</Panel>
|
||||
<Panel title={"My accounts"}>
|
||||
<MenuList>
|
||||
<li><Link rel={"me"} href={"https://github.com/Steffo99"}>Steffo99</Link></li>
|
||||
<li><Link rel={"me"} href={"mailto:ste.pigozzi@gmail.com"}>ste.pigozzi@gmail.com</Link></li>
|
||||
<li><Link rel={"me"} href={"https://t.me/Steffo"}>@Steffo</Link></li>
|
||||
<li><Link rel={"me"} href={"https://discordapp.com/channels/@me/77703771181817856/"}>Steffo#4036</Link></li>
|
||||
<li><Link rel={"me"} href={"https://steamcommunity.com/id/steffo1999/"}>Steffo</Link></li>
|
||||
</MenuList>
|
||||
</Panel>
|
||||
</Section>
|
||||
<Section>
|
||||
<Panel title={"My websites"}>
|
||||
<MenuList>
|
||||
<li><Link href={"https://uni.steffo.eu"}>Appuntiweb</Link><small>, where I publish my university notes</small></li>
|
||||
<li><Link href={"https://ryg.steffo.eu"}>RYGweb</Link><small>, the website of a community I manage</small></li>
|
||||
</MenuList>
|
||||
</Panel>
|
||||
<Panel title={"My achievements"}>
|
||||
<MenuList>
|
||||
<li><BaseLink href={"https://ldjam.com/events/ludum-dare/46/keep-everything-alive-1"}><FontAwesomeIcon icon={faAward}/> 9th place</BaseLink><small> in the <i>Theme</i> category at the</small> <Link href={"https://en.wikipedia.org/wiki/Ludum_Dare"}>Ludum Dare 46</Link> <small>game jam</small></li>
|
||||
<li><span style={"color: lightgray"}><FontAwesomeIcon icon={faMedal}/> Silver medal</span><small> at </small><Link href={"https://it.wikipedia.org/wiki/Olimpiadi_europee_delle_scienze"}>EUSO 2016</Link></li>
|
||||
</MenuList>
|
||||
</Panel>
|
||||
</Section>
|
||||
</div>
|
||||
);
|
||||
}
|
|
@ -1,11 +0,0 @@
|
|||
|
||||
.container {
|
||||
display: flex;
|
||||
align-content: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.content {
|
||||
margin-top: auto;
|
||||
margin-bottom: auto;
|
||||
}
|
|
@ -1,57 +0,0 @@
|
|||
@bg: #0d193b;
|
||||
@bg-light: #142245;
|
||||
@bg-lighter: #1c2b4f;
|
||||
@bg-lightest: #233358;
|
||||
@fg: #a0ccff;
|
||||
@accent: #ffffff;
|
||||
|
||||
@link: #00caca;
|
||||
@linkhover: #00ffff;
|
||||
@linkactive: #a0ffff;
|
||||
|
||||
@plus: fade(@fg, 5%);
|
||||
@plusplus: fade(@fg, 10%);
|
||||
@plusplusplus: fade(@fg, 15%);
|
||||
@plusplusplusplus: fade(@fg, 20%);
|
||||
|
||||
@red: #ff7d7d;
|
||||
@orange: #ffbb7d;
|
||||
@yellow: #ffff7d;
|
||||
@lime: #7dff7d;
|
||||
@cyan: #7dffff;
|
||||
@blue: #7d7dff;
|
||||
@magenta: #ff7dff;
|
||||
|
||||
@disabledfg: #808080;
|
||||
@disabledbg: #1f1f1f;
|
||||
|
||||
@example: #d3a1ff;
|
||||
|
||||
|
||||
.red {
|
||||
color: @red;
|
||||
}
|
||||
|
||||
.orange {
|
||||
color: @orange;
|
||||
}
|
||||
|
||||
.yellow {
|
||||
color: @yellow;
|
||||
}
|
||||
|
||||
.lime {
|
||||
color: @lime;
|
||||
}
|
||||
|
||||
.cyan {
|
||||
color: @cyan;
|
||||
}
|
||||
|
||||
.blue {
|
||||
color: @blue;
|
||||
}
|
||||
|
||||
.magenta {
|
||||
color: @magenta;
|
||||
}
|
|
@ -1,20 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title><% preact.title %></title>
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
<meta property="og:image" content="/assets/opengraph.png" />
|
||||
<link href="/src/assets/favicon.ico" rel="icon" type="image/x-icon"/>
|
||||
<link href="/src/assets/favicon.ico" rel="shortcut icon" type="image/x-icon"/>
|
||||
<style>
|
||||
body {
|
||||
background-color: #0d193b;
|
||||
}
|
||||
</style>
|
||||
<% preact.headEnd %>
|
||||
</head>
|
||||
<body>
|
||||
<% preact.bodyEnd %>
|
||||
</body>
|
||||
</html>
|
26
tsconfig.json
Normal file
|
@ -0,0 +1,26 @@
|
|||
{
|
||||
"compilerOptions": {
|
||||
"target": "es5",
|
||||
"lib": [
|
||||
"dom",
|
||||
"dom.iterable",
|
||||
"esnext"
|
||||
],
|
||||
"allowJs": true,
|
||||
"skipLibCheck": true,
|
||||
"esModuleInterop": true,
|
||||
"allowSyntheticDefaultImports": true,
|
||||
"strict": true,
|
||||
"forceConsistentCasingInFileNames": true,
|
||||
"noFallthroughCasesInSwitch": true,
|
||||
"module": "esnext",
|
||||
"moduleResolution": "node",
|
||||
"resolveJsonModule": true,
|
||||
"isolatedModules": true,
|
||||
"noEmit": true,
|
||||
"jsx": "react-jsx"
|
||||
},
|
||||
"include": [
|
||||
"src"
|
||||
]
|
||||
}
|