├── LICENSE ├── README.md ├── app.js ├── package.json ├── public └── style.css └── views ├── index.ejs └── yonlendir.ejs /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 mythors 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Information (Personal Website) 2 | I'm mythors. I made a small profile for discord users in v2 form with a different design, that is, a site where you can share your own information. I hope you liked it. 3 | 4 | 5 | -------------------------------------------------------------------------------- /app.js: -------------------------------------------------------------------------------- 1 | const express = require("express"); 2 | const app = express(); 3 | const helmet = require("helmet"); 4 | const rateLimit = require("express-rate-limit"); 5 | const ms = require("ms"); 6 | const ejs = require("ejs"); 7 | app.engine("html", ejs.renderFile); 8 | app.set("view engine", "html"); 9 | 10 | app.use(express.static("public")); 11 | app.use(function (req, res, next) { 12 | res.header("Access-Control-Allow-Origin", "*"); 13 | res.header( 14 | "Access-Control-Allow-Headers", 15 | "Access-Control-Allow-Headers, Origin, Accept, Authorization, X-Requested-With, Content-Type, Access-Control-Request-Method, Access-Control-Request-Headers" 16 | ); 17 | res.header( 18 | "Access-Control-Allow-Methods", 19 | "GET, POST, PATCH, PUT, OPTIONS" 20 | ); 21 | next(); 22 | }); 23 | 24 | app.use( 25 | helmet({ 26 | contentSecurityPolicy: false, 27 | }) 28 | ); 29 | 30 | const IndexRequestsLimiter = rateLimit({ 31 | windowMs: 1 * 60 * 1000, // 1 minutes 32 | max: 60, // start blocking after 60 requests 33 | message: 34 | "Bu IP üzerinden çok fazla istek geldi. Lütfen 1 dakika sonra tekrar deneyin.", 35 | }); 36 | 37 | 38 | app.get("/", IndexRequestsLimiter, async (req, res) => { 39 | res.render("index.ejs", {}); 40 | }); 41 | 42 | 43 | app.get("/yonlendir", IndexRequestsLimiter, async (req ,res) => { 44 | let query = req.query.url; 45 | if(!query) return res.status(400).redirect("/"); 46 | res.render("yonlendir.ejs", {query}); 47 | }); 48 | 49 | app.listen(process.env.PORT || process.env.port || 3131, () => { 50 | console.log("Back-end Server Is Running aq") 51 | }); -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "drmotion", 3 | "scripts": { 4 | "start": "node app.js" 5 | }, 6 | "engines": { 7 | "node": "14.x" 8 | }, 9 | "dependencies": { 10 | "express": "^4.17.1", 11 | "helmet": "^4.6.0", 12 | "express-rate-limit": "^5.3.0", 13 | "ejs": "^3.1.6", 14 | "ms": "^2.1.3" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /public/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | background-color: #111111; 3 | background-attachments: fixed; 4 | background-image: url(https://searchunique.news/img/products/32253-laeacco-koyu-siyah-degrade-duez-renk-duvar-grunge-parti-portre-fotograf-arka-plan-fotograf-arka-fonu-photocall-fotograf-stuedyosu.jpg); 5 | background-position: top center; 6 | background-repeat: no-repeat; 7 | background-attachment: fixed; 8 | background-size: cover; 9 | color:white; 10 | } 11 | 12 | .box { 13 | overflow: hidden; 14 | background-color: #111; 15 | border-radius: 10px; 16 | position: absolute; 17 | top: 50%; 18 | left: 50%; 19 | transform: translate(-50%, -50%); 20 | width: 900px; 21 | box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.5); 22 | } 23 | 24 | .box > .box-image > img { 25 | display: block; 26 | margin: 0 auto; 27 | border-radius: 50%; 28 | width: 250px; 29 | } 30 | 31 | .box > h1 { 32 | font-family: balsamiq sans, cursive; 33 | font-weight: bolder; 34 | color: #fff; 35 | text-align: center; 36 | } 37 | 38 | .box > p { 39 | font-family: balsamiq sans, cursive; 40 | font-weight: bolder; 41 | color: #bbb; 42 | text-align: center; 43 | font-style: italic; 44 | } 45 | .flex-box { 46 | display: flex; 47 | justify-content: space-between; 48 | } 49 | 50 | .flex-box > div { 51 | padding: 5px; 52 | margin: 5px; 53 | } 54 | 55 | .flex-box > div > a { 56 | font-family: balsamiq sans, cursive; 57 | font-weight: bolder; 58 | color: #fff; 59 | text-align: center; 60 | text-decoration: none; 61 | transition: 250ms all; 62 | } 63 | 64 | .flex-box > div > hr { 65 | border: none; 66 | background: #bbb; 67 | height: 2px; 68 | transition: 250ms all; 69 | } 70 | 71 | .flex-box > div > a:hover + hr { 72 | background: red; 73 | } 74 | 75 | .discordcard { 76 | background-color: #2c2f33; 77 | border-radius: 10px; 78 | transition: all 0.5s; 79 | } 80 | .discordcard:hover { 81 | transform: translateY(-5px); 82 | box-shadow: 0px 3px 3px #000; 83 | } 84 | 85 | .nav-link { 86 | color: #fff; 87 | transition: all 0.3s; 88 | font-weight: 500; 89 | border-radius: 10px; 90 | } 91 | .nav-link:hover { 92 | color: #84dde2; 93 | background-color: #2c2f33; 94 | } 95 | 96 | 97 | .middle { 98 | top: 50%; 99 | left: 50%; 100 | transform: translate(-50%, -50%); 101 | position: absolute; 102 | } 103 | .bar { 104 | width: 10px; 105 | height: 70px; 106 | background: #fff; 107 | display: inline-block; 108 | transform-origin: bottom center; 109 | border-top-right-radius: 20px; 110 | border-top-left-radius: 20px; 111 | /* box-shadow:5px 10px 20px inset rgba(255,23,25.2); */ 112 | animation: loader 1.2s linear infinite; 113 | } 114 | .bar1 { 115 | animation-delay: 0.1s; 116 | } 117 | .bar2 { 118 | animation-delay: 0.2s; 119 | } 120 | .bar3 { 121 | animation-delay: 0.3s; 122 | } 123 | .bar4 { 124 | animation-delay: 0.4s; 125 | } 126 | .bar5 { 127 | animation-delay: 0.5s; 128 | } 129 | .bar6 { 130 | animation-delay: 0.6s; 131 | } 132 | .bar7 { 133 | animation-delay: 0.7s; 134 | } 135 | .bar8 { 136 | animation-delay: 0.8s; 137 | } 138 | 139 | @keyframes loader { 140 | 0% { 141 | transform: scaleY(0.1); 142 | background: ; 143 | } 144 | 50% { 145 | transform: scaleY(1); 146 | background: yellowgreen; 147 | } 148 | 100% { 149 | transform: scaleY(0.1); 150 | background: transparent; 151 | } 152 | } 153 | 154 | .pluse-avatar-dnd { 155 | background-color: #7289da; 156 | border-radius: 50%; 157 | animation: pulse-dnd 2s infinite; 158 | } 159 | 160 | @keyframes pulse-dnd { 161 | 0% { 162 | transform: scale(0.9); 163 | box-shadow: 0 0 0 0 rgba(114, 137, 218, 0.5) 164 | } 165 | 166 | 70% { 167 | transform: scale(1); 168 | box-shadow: 0 0 0 10px rgba(255, 82, 82, 0); 169 | } 170 | 171 | 100% { 172 | transform: scale(0.9); 173 | box-shadow: 0 0 0 0 rgba(255, 82, 82, 0); 174 | } 175 | 176 | 177 | #title { 178 | margin: auto; 179 | display: block; 180 | } -------------------------------------------------------------------------------- /views/index.ejs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Dr.motion 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 |

16 |
17 | 18 | 19 | 20 | 21 |
22 |

23 | drmotion 24 |

25 |

26 |

27 |

28 |
29 |
30 | 31 |
32 |
33 | 34 |
35 |
36 | 37 |
38 |
39 | 40 |
41 | 42 |
43 |
44 | 45 | 64 | 65 | 66 | 67 | 68 | -------------------------------------------------------------------------------- /views/yonlendir.ejs: -------------------------------------------------------------------------------- 1 | 2 | 3 | Loading... 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 | 21 | 26 | 27 | 28 | 29 | --------------------------------------------------------------------------------