This commit is contained in:
Danko-chan 2022-03-31 12:37:28 +05:30
commit b0984f23ab
27 changed files with 3343 additions and 74 deletions

View File

@ -117,6 +117,15 @@
"contributions": [
"code"
]
},
{
"login": "Danko-chan",
"name": "Abhay Verma",
"avatar_url": "https://avatars.githubusercontent.com/u/55607738?v=4",
"profile": "https://github.com/Danko-chan",
"contributions": [
"code"
]
}
],
"contributorsPerLine": 7,

View File

@ -6,9 +6,9 @@
"code": "ERR_PNPM_NO_IMPORTER_MANIFEST_FOUND",
"err": {
"name": "pnpm",
"message": "No package.json (or package.yaml, or package.json5) was found in \"/home/chirag/Desktop/jwoc/url-minify\".",
"message": "No package.json (or package.yaml, or package.json5) was found in \"D:\\url-minify\".",
"code": "ERR_PNPM_NO_IMPORTER_MANIFEST_FOUND",
"stack": "pnpm: No package.json (or package.yaml, or package.json5) was found in \"/home/chirag/Desktop/jwoc/url-minify\".\n at readProjectManifest (/usr/local/lib/node_modules/pnpm/dist/pnpm.cjs:19808:13)\n at async Object.readProjectManifestOnly (/usr/local/lib/node_modules/pnpm/dist/pnpm.cjs:19812:28)\n at async readProjectManifestOnly (/usr/local/lib/node_modules/pnpm/dist/pnpm.cjs:43691:24)\n at async Object.handler (/usr/local/lib/node_modules/pnpm/dist/pnpm.cjs:177805:24)\n at async /usr/local/lib/node_modules/pnpm/dist/pnpm.cjs:182068:21\n at async run (/usr/local/lib/node_modules/pnpm/dist/pnpm.cjs:182042:34)\n at async runPnpm (/usr/local/lib/node_modules/pnpm/dist/pnpm.cjs:182261:5)\n at async /usr/local/lib/node_modules/pnpm/dist/pnpm.cjs:182253:7"
"stack": "pnpm: No package.json (or package.yaml, or package.json5) was found in \"D:\\url-minify\".\n at readProjectManifest (C:\\Users\\chira\\AppData\\Roaming\\npm\\node_modules\\pnpm\\dist\\pnpm.cjs:19805:13)\n at async Object.readProjectManifestOnly (C:\\Users\\chira\\AppData\\Roaming\\npm\\node_modules\\pnpm\\dist\\pnpm.cjs:19809:28)\n at async readProjectManifestOnly (C:\\Users\\chira\\AppData\\Roaming\\npm\\node_modules\\pnpm\\dist\\pnpm.cjs:43712:24)\n at async Object.handler (C:\\Users\\chira\\AppData\\Roaming\\npm\\node_modules\\pnpm\\dist\\pnpm.cjs:177753:24)\n at async C:\\Users\\chira\\AppData\\Roaming\\npm\\node_modules\\pnpm\\dist\\pnpm.cjs:182016:21\n at async run (C:\\Users\\chira\\AppData\\Roaming\\npm\\node_modules\\pnpm\\dist\\pnpm.cjs:181990:34)\n at async runPnpm (C:\\Users\\chira\\AppData\\Roaming\\npm\\node_modules\\pnpm\\dist\\pnpm.cjs:182209:5)\n at async C:\\Users\\chira\\AppData\\Roaming\\npm\\node_modules\\pnpm\\dist\\pnpm.cjs:182201:7"
}
}
}

View File

@ -1,7 +1,7 @@
<h1 align="center">Welcome to url-minify 👋</h1>
<!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->
[![All Contributors](https://img.shields.io/badge/All_Contributors-12-orange.svg)](#-our-contributors)
[![All Contributors](https://img.shields.io/badge/all_contributors-13-orange.svg?style=flat-square)](#contributors-)
<!-- ALL-CONTRIBUTORS-BADGE:END -->
<a href="LICENSE" target="_blank">
@ -150,6 +150,7 @@ Thanks goes to these wonderful people:
<td align="center"><a href="https://github.com/Tejas-117"><img src="https://avatars.githubusercontent.com/u/75026048?v=4?s=55" width="55px;" alt=""/><br /><sub><b>Tejas</b></sub></a><br /><a href="https://github.com/BRAVO68WEB/url-minify/commits?author=Tejas-117" title="Code">💻</a></td>
<td align="center"><a href="http://www.linkedin.com/in/omar-sherif-2152021a3"><img src="https://avatars.githubusercontent.com/u/69806823?v=4?s=55" width="55px;" alt=""/><br /><sub><b>Omar Sherif Ali</b></sub></a><br /><a href="https://github.com/BRAVO68WEB/url-minify/commits?author=omar-sherif9992" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/aadityasinha-dotcom"><img src="https://avatars.githubusercontent.com/u/75474786?v=4?s=55" width="55px;" alt=""/><br /><sub><b>Aaditya Sinha</b></sub></a><br /><a href="https://github.com/BRAVO68WEB/url-minify/commits?author=aadityasinha-dotcom" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/Danko-chan"><img src="https://avatars.githubusercontent.com/u/55607738?v=4?s=55" width="55px;" alt=""/><br /><sub><b>Abhay Verma</b></sub></a><br /><a href="https://github.com/BRAVO68WEB/url-minify/commits?author=Danko-chan" title="Code">💻</a></td>
</tr>
</table>

View File

@ -1,3 +1,3 @@
MONGO_DB=mongo-uri
MONGO_DB=mongodb://localhost:27017/urlMinify
SECRET=secret
AUTH_SECRET=secret

View File

@ -2,6 +2,12 @@ const Minfy = require('../models/minifed_urls')
const base_url = 'https://minfy.xyz/'
const { nanoid } = require('nanoid')
const blackListedAliases = ['404','dashboard','qr','credits','github','admin','geo','all','me','go','upload','download','link','about','tos','faqs']
function verifyAlias(alias) {
const boolean = blackListedAliases.find(element => element===alias);
return boolean;
}
module.exports.getAllData = async (req, res) => {
Minfy.find({})
.then((data) => {
@ -72,7 +78,7 @@ module.exports.addURL = async (req, res) => {
Minfy.create({
originalUrl: req.body.originalUrl,
alias: alias,
minifiedUrl: minifiedUrl
minifiedUrl: minifiedUrl,
})
.then((data) => {
res.json(data)
@ -111,6 +117,12 @@ module.exports.updateUrlData = async (req, res) => {
module.exports.addURLAuthed = async (req, res) => {
const { alias, originalUrl } = req.body
if(verifyAlias(alias))
{
res.sendStatus(500);
throw new Error('This alias cannot be used, try some another.');
}
var createdBy = req.user.data.email
// console.log(req.user);
const minifiedUrl = base_url + alias
@ -145,3 +157,14 @@ module.exports.visitor = async (req, res) => {
res.sendStatus(500)
})
}
module.exports.getAllurlsforUser = async (req, res) => {
Minfy.find({ createdBy: req.user.data.email })
.then((data) => {
res.send(data)
})
.catch((err) => {
console.error(err)
res.sendStatus(500)
})
}

View File

@ -11,6 +11,7 @@ router.get('/alias/:alias/status', controller.getAliasStatus)
router.post('/add', controller.addURL)
router.post('/add/custom', auth, controller.addURLAuthed)
router.get('/all/user', auth, controller.getAllurlsforUser)
router.patch('/edit/:id', auth, controller.updateUrlData)

View File

@ -1,2 +1,3 @@
NODE_ENV=dev
NEXT_PUBLIC_API_URL=https://api.minfy.xyz
#NEXT_PUBLIC_API_URL=https://api.minfy.xyz
NEXT_PUBLIC_API_URL=http://localhost:5000

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 KiB

View File

@ -0,0 +1,115 @@
import React, { useState } from 'react'
import ContributorsStyle from './Contributors.style'
import styles from '../../styles/Contributors.module.css'
import Image from 'next/image'
import profilepic from 'assets/ContributorsImages/sampleImage.jpg'
import { GitHub } from '@mui/icons-material'
import Head from "next/head";
import Script from "next/script";
export default function Contributors() {
const [contributors, setContributors] = useState([
{
id: 1,
profilepic,
name: 'Jacob Myers',
gitHubUsername: '@jacob',
},
{
id: 2,
profilepic,
name: 'John Doe',
gitHubUsername: '@john',
},
{
id: 3,
profilepic,
name: 'Sara Williams',
gitHubUsername: '@sara',
},
{
id: 4,
profilepic,
name: 'Sara Williams',
gitHubUsername: '@sara',
},
{
id: 5,
profilepic,
name: 'Sara Williams',
gitHubUsername: '@sara',
},
{
id: 6,
profilepic,
name: 'Sara Williams',
gitHubUsername: '@sara',
},
{
id: 7,
profilepic,
name: 'Sara Williams',
gitHubUsername: '@sara',
},
{
id: 8,
profilepic,
name: 'Sara Williams',
gitHubUsername: '@sara',
},
{
id: 9,
profilepic,
name: 'Sara Williams',
gitHubUsername: '@sara',
},
])
return (
<>
<Head>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3"
crossOrigin="anonymous"
/>
</Head>
<Script
id="bootstrap-cdn"
src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js" />
<ContributorsStyle>
<>
<div className={styles.head}>CONTRIBUTORS</div>
<div class="conatiner contributor-cards">
<div className="contributor-cards row">
{contributors.map((contributor) => {
return (
<div className="contributor-card col-3" key={contributor.id}>
<div className="contributor-cardPointerStart">
<div id="circle"></div>
</div>
<div id="ImageContainer">
<Image
src={contributor.profilepic}
alt="Contributors Profile Picture"
width={'100px'}
height={'100px'}
className="contributor-Pic"
/>
</div>
<div id="contributorDetailsWrapper">
<div className="contributor-Name">{contributor.name}</div>
<div className="contributor-GithubUsername">
<GitHub />
<span id="username">{contributor.gitHubUsername}</span>
</div>
</div>
</div>
)
})}
</div>
</div>
</>
</ContributorsStyle>
</>
)
}

View File

@ -0,0 +1,67 @@
import styled from 'styled-components'
export default styled.section`
display: flex;
flex-direction: column;
justify-content: center;
.contributor-cards{
display: flex;
width: 85%;
align-item: center;
justify-content: center;
margin:20px;
margin-left: 6%
}
.contributor-card {
width: 240px;
height: 250px;
display: flex;
flex-direction: column;
align-items: center;
justify-content: space-around;
background-color: #ffffff;
border-radius: 10px;
margin: 15px;
padding: 5px;
}
.contributor-cardPointerStart {
width: 180px;
display: flex;
justify-content: flex-start;
}
#circle {
height: 10px;
width: 10px;
border-radius: 50%;
background-color: green;
}
.contributor-Pic {
width: 100px;
height: 100px;
}
#ImageContainer {
border-radius: 50%;
border: 3px solid #35cdf0;
overflow: hidden;
}
.contributor-Name {
color: #1d92e0;
font-size: 25px;
font-weight: bold;
}
#contributorDetailsWrapper {
display: flex;
flex-direction: column;
justfiy-content: flex-start;
}
.contributor-GithubUsername {
display: flex;
justify-content: baseline;
font-size: 20px;
}
#username {
color: grey;
font-weight: bold;
padding-left: 4px;
}
`

View File

@ -1,18 +1,18 @@
import React from 'react'
import LoginStyle from './Login.style'
import AccountCircleIcon from '@mui/icons-material/AccountCircle'
// import AccountCircleIcon from '@mui/icons-material/AccountCircle'
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
import {
faUser,
faEnvelope,
faLock,
} from '@fortawesome/free-solid-svg-icons'
import { UserContext } from '../../helpers/user/usercontext'
import { faEnvelope, faLock } from '@fortawesome/free-solid-svg-icons'
import UserContext from '../../helpers/user/usercontext'
import { useState } from 'react'
import Link from 'next/link'
import { useContext } from 'react'
import { useRouter } from 'next/router'
function Login() {
const router = useRouter()
const user = useContext(UserContext)
const [userData, setUserData] = useState({
email: '',
password: '',
@ -24,9 +24,17 @@ function Login() {
setUserData({ ...userData, [name]: value })
}
const handleLogin = (evt) => {
evt.preventDefault()
user.login(userData)
}
if (user.user) {
router.push('/dashboard')
}
return (
<LoginStyle>
<form className="form-wrapper">
<form className="form-wrapper" onSubmit={handleLogin}>
<p className="reg-title">Sign in</p>
<img src="/images/user.png"></img>
@ -61,11 +69,9 @@ function Login() {
/>
</div>
<Link href="/">
<button type="submit" className="submit-button">
Submit
</button>
</Link>
<button type="submit" className="submit-button">
Submit
</button>
<p className="foot-text">
New here?&nbsp;

View File

@ -50,8 +50,19 @@ function Index(props) {
>
<Container maxWidth="xl">
<Toolbar disableGutters="false">
<span><Logo /></span>
<Typography component={motion.div} initial={{ y: -50, opacity: 0 }} animate={{ y: 0, opacity: 1, transition: { delay: 1 } }} variant="h5" sx={{ fontWeight: 'bold', fontFamily: "'Montserrat Alternates', sans-serif;" }}>
<span>
<Logo />
</span>
<Typography
component={motion.div}
initial={{ y: -50, opacity: 0 }}
animate={{ y: 0, opacity: 1, transition: { delay: 1 } }}
variant="h5"
sx={{
fontWeight: 'bold',
fontFamily: "'Montserrat Alternates', sans-serif;",
}}
>
UrlMiniFy
</Typography>
<Box
@ -94,7 +105,11 @@ function Index(props) {
href="https://github.com/BRAVO68WEB/url-minify"
target={'_blank'}
>
<Typography textAlign="center" variant="h6" sx={{ display: 'flex' }}>
<Typography
textAlign="center"
variant="h6"
sx={{ display: 'flex' }}
>
<GitHubIcon fontSize="medium" />
GitHub
</Typography>
@ -102,7 +117,11 @@ function Index(props) {
</MenuItem>
<MenuItem onClick={handleCloseNavMenu}>
<a href={NotFound}>
<Typography textAlign="center" variant="h6" sx={{ display: 'flex' }}>
<Typography
textAlign="center"
variant="h6"
sx={{ display: 'flex' }}
>
CREDITS
</Typography>
</a>
@ -158,7 +177,7 @@ function Index(props) {
fontWeight: 'bold',
}}
>
CREDITS
<Link href="./contributors">CREDITS</Link>
</Button>
</a>
</Box>
@ -198,16 +217,20 @@ function Index(props) {
</Menu>
</Box>
) : (
<Typography sx={{
color: 'white',
display: 'flex',
fontSize: 'h6.fontSize',
fontFamily: "'Open Sans', sans-serif;",
fontWeight: 'bold',
}} component={motion.div}
<Typography
sx={{
color: 'white',
display: 'flex',
fontSize: 'h6.fontSize',
fontFamily: "'Open Sans', sans-serif;",
fontWeight: 'bold',
}}
component={motion.div}
initial={{ y: -50, opacity: 0 }}
animate={{ y: 0, opacity: 1, transition: { delay: 1 } }}
whileHover={{ scale: 1.1, textShadow: '2px 2px black' }} onClick={login}>
whileHover={{ scale: 1.1, textShadow: '2px 2px black' }}
onClick={login}
>
<Link href="./login">LOGIN</Link>
</Typography>
)}

View File

@ -1,13 +1,15 @@
import React from 'react'
import RegStyle from './Reg.style'
import Image from 'next/image'
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
import { faUser, faEnvelope, faLock } from '@fortawesome/free-solid-svg-icons'
import { useState, useContext } from 'react'
import { Link } from '@mui/material'
import UserAuth from 'helpers/user/usercontext'
import { useRouter } from 'next/router'
function Reg() {
const router = useRouter()
const context = useContext(UserAuth)
const [userData, setUserData] = useState({
username: '',
email: '',
@ -25,7 +27,10 @@ function Reg() {
setUserData(userData)
context.createAcc(userData)
}
const context = useContext(UserAuth);
if (context.user) {
router.push('/dashboard')
}
return (
<RegStyle>
<form onSubmit={handleSubmit} className="form-wrapper">

View File

@ -1,31 +1,102 @@
import UserAuth from './usercontext'
import { useState } from 'react'
import axios from 'helpers/Axios'
import { useEffect } from 'react'
const storeJWT = (data) => {
let jwt = data
try {
localStorage.setItem('jwt', jwt)
return false
} catch (e) {
return true
}
}
const fetchJWT = () => {
try {
let jwt = localStorage.getItem('jwt')
return jwt
} catch (e) {
return false
}
}
const UserAuthProvider = ({ children }) => {
const [user, setUser] = useState(null)
const login = () => {
setUser('default')
const [jwt, setJwt] = useState(null)
const login = async ({ email, password }) => {
let login = true
await axios
.post(`/user/login`, {
email: email,
password: password,
})
.then(function (response) {
setJwt(response.data.access_token)
storeJWT(response.data.access_token)
})
.catch(function (error) {
login = false
console.error(error)
})
return login
}
const createAcc = (data) => {
axios
const createAcc = async ({ email, password, name }) => {
let register = true
await axios
.post(`/user/register`, {
email: data.email,
password: data.password,
name: data.name,
email: email,
password: password,
name: name,
})
.then(function (response) {
console.log(response)
setJwt(response.data)
storeJWT(response.data)
})
.catch(function (error) {
console.log(error)
register = false
console.error(error)
})
return register
}
const fetchUser = async () => {
if (!jwt) {
return
}
axios({
headers: {
Authorization: jwt,
},
method: 'GET',
url: '/user/me',
})
.then((user) => {
setUser(user.data)
})
.catch((err) => {
console.error(err)
setJwt(null)
setUser(null)
storeJWT(null)
})
}
const logout = () => {
setUser(null)
setJwt(null)
storeJWT(null)
}
const context = { user, login, logout, createAcc }
const context = { jwt, user, login, logout, createAcc }
useEffect(() => {
let jwt = fetchJWT()
if (jwt) {
setJwt(jwt)
}
}, [])
useEffect(() => {
fetchUser()
}, [jwt])
return <UserAuth.Provider value={context}>{children}</UserAuth.Provider>
}

6
frontend/nodemon.json Normal file
View File

@ -0,0 +1,6 @@
{
"verbose": true,
"ignore": ["node_modules", ".next"],
"watch": ["server/**/*", "index.js"],
"ext": "js json"
}

File diff suppressed because it is too large Load Diff

View File

@ -57,6 +57,7 @@
},
"homepage": "https://github.com/bravo68web/url-minify#readme",
"devDependencies": {
"nodemon": "^2.0.15",
"prettier": "2.5.1"
}
}

View File

@ -6,15 +6,12 @@ import '../styles/404.css'
import UserAuthProvider from 'helpers/user/userState'
import Page from 'react-page-loading'
function MyApp({ Component, pageProps }) {
return (
<UserAuthProvider>
<Page loader={"bar"} color={"#03b1fc"} size={10} >
<Page loader={'bar'} color={'#03b1fc'} size={10}>
<Component {...pageProps} />
</Page>
</UserAuthProvider>
)
}

View File

@ -0,0 +1,15 @@
import React from 'react'
import Navbar from 'components/NavBar'
import Contributors from 'components/Contributors/Contributors'
function contributors() {
return (
<>
<main className={'main-bg'}>
<Navbar />
<Contributors />
</main>
</>
)
}
export default contributors

View File

@ -1,5 +1 @@
<svg width="64" height="64" viewBox="0 0 64 64" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="64" height="64" rx="32" fill="#662CDC" fill-opacity="0.2"/>
<path d="M32 41C40.2843 41 47 32 47 32C47 32 40.2843 23 32 23C23.7157 23 17 32 17 32C17 32 23.7157 41 32 41Z" stroke="#662CDC" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M32 35C33.6569 35 35 33.6569 35 32C35 30.3431 33.6569 29 32 29C30.3431 29 29 30.3431 29 32C29 33.6569 30.3431 35 32 35Z" stroke="#662CDC" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" fill="none" viewBox="0 0 64 64"><rect width="64" height="64" fill="#662CDC" fill-opacity=".2" rx="32"/><path stroke="#662CDC" stroke-linecap="round" stroke-linejoin="round" stroke-width="3" d="M32 41C40.2843 41 47 32 47 32C47 32 40.2843 23 32 23C23.7157 23 17 32 17 32C17 32 23.7157 41 32 41Z"/><path stroke="#662CDC" stroke-linecap="round" stroke-linejoin="round" stroke-width="3" d="M32 35C33.6569 35 35 33.6569 35 32C35 30.3431 33.6569 29 32 29C30.3431 29 29 30.3431 29 32C29 33.6569 30.3431 35 32 35Z"/></svg>

Before

Width:  |  Height:  |  Size: 594 B

After

Width:  |  Height:  |  Size: 576 B

View File

@ -1,6 +1 @@
<svg width="64" height="64" viewBox="0 0 64 64" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="64" height="64" rx="32" fill="#43BFD6" fill-opacity="0.2"/>
<path d="M26 30.5C25.1716 30.5 24.5 31.1716 24.5 32C24.5 32.8284 25.1716 33.5 26 33.5V30.5ZM38 33.5C38.8284 33.5 39.5 32.8284 39.5 32C39.5 31.1716 38.8284 30.5 38 30.5V33.5ZM26 33.5H38V30.5H26V33.5Z" fill="#43BFD6"/>
<path d="M36.5 24.5C35.6716 24.5 35 25.1716 35 26C35 26.8284 35.6716 27.5 36.5 27.5V24.5ZM36.5 36.5C35.6716 36.5 35 37.1716 35 38C35 38.8284 35.6716 39.5 36.5 39.5V36.5ZM36.5 27.5H39.5V24.5H36.5V27.5ZM39.5 36.5H36.5V39.5H39.5V36.5ZM44 32C44 34.4853 41.9853 36.5 39.5 36.5V39.5C43.6421 39.5 47 36.1421 47 32H44ZM39.5 27.5C41.9853 27.5 44 29.5147 44 32H47C47 27.8579 43.6421 24.5 39.5 24.5V27.5Z" fill="#43BFD6"/>
<path d="M27.5 27.5C28.3284 27.5 29 26.8284 29 26C29 25.1716 28.3284 24.5 27.5 24.5V27.5ZM27.5 39.5C28.3284 39.5 29 38.8284 29 38C29 37.1716 28.3284 36.5 27.5 36.5V39.5ZM27.5 24.5H24.5V27.5H27.5V24.5ZM24.5 39.5H27.5V36.5H24.5V39.5ZM17 32C17 36.1421 20.3579 39.5 24.5 39.5V36.5C22.0147 36.5 20 34.4853 20 32H17ZM24.5 24.5C20.3579 24.5 17 27.8579 17 32H20C20 29.5147 22.0147 27.5 24.5 27.5V24.5Z" fill="#43BFD6"/>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" fill="none" viewBox="0 0 64 64"><rect width="64" height="64" fill="#43BFD6" fill-opacity=".2" rx="32"/><path fill="#43BFD6" d="M26 30.5C25.1716 30.5 24.5 31.1716 24.5 32C24.5 32.8284 25.1716 33.5 26 33.5V30.5ZM38 33.5C38.8284 33.5 39.5 32.8284 39.5 32C39.5 31.1716 38.8284 30.5 38 30.5V33.5ZM26 33.5H38V30.5H26V33.5Z"/><path fill="#43BFD6" d="M36.5 24.5C35.6716 24.5 35 25.1716 35 26C35 26.8284 35.6716 27.5 36.5 27.5V24.5ZM36.5 36.5C35.6716 36.5 35 37.1716 35 38C35 38.8284 35.6716 39.5 36.5 39.5V36.5ZM36.5 27.5H39.5V24.5H36.5V27.5ZM39.5 36.5H36.5V39.5H39.5V36.5ZM44 32C44 34.4853 41.9853 36.5 39.5 36.5V39.5C43.6421 39.5 47 36.1421 47 32H44ZM39.5 27.5C41.9853 27.5 44 29.5147 44 32H47C47 27.8579 43.6421 24.5 39.5 24.5V27.5Z"/><path fill="#43BFD6" d="M27.5 27.5C28.3284 27.5 29 26.8284 29 26C29 25.1716 28.3284 24.5 27.5 24.5V27.5ZM27.5 39.5C28.3284 39.5 29 38.8284 29 38C29 37.1716 28.3284 36.5 27.5 36.5V39.5ZM27.5 24.5H24.5V27.5H27.5V24.5ZM24.5 39.5H27.5V36.5H24.5V39.5ZM17 32C17 36.1421 20.3579 39.5 24.5 39.5V36.5C22.0147 36.5 20 34.4853 20 32H17ZM24.5 24.5C20.3579 24.5 17 27.8579 17 32H20C20 29.5147 22.0147 27.5 24.5 27.5V24.5Z"/></svg>

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@ -1,4 +1 @@
<svg width="64" height="64" viewBox="0 0 64 64" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="64" height="64" rx="32" fill="#27AE60" fill-opacity="0.2"/>
<path d="M20 32.0002L27.4246 39.4248L43.3345 23.5149" stroke="#27AE60" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" fill="none" viewBox="0 0 64 64"><rect width="64" height="64" fill="#27AE60" fill-opacity=".2" rx="32"/><path stroke="#27AE60" stroke-linecap="round" stroke-linejoin="round" stroke-width="3" d="M20 32.0002L27.4246 39.4248L43.3345 23.5149"/></svg>

Before

Width:  |  Height:  |  Size: 321 B

After

Width:  |  Height:  |  Size: 308 B

View File

@ -1,4 +1 @@
<svg width="64" height="64" viewBox="0 0 64 64" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="64" height="64" rx="32" fill="#D9F2F7"/>
<path d="M24.3 29.26H21.86L19.34 36.22L16.76 29.26H14.2L18.16 39H20.48L24.3 29.26ZM30.5678 39V26.04H28.4878C28.2078 27.4 26.9278 28.44 25.0678 28.48V30.12H28.2078V39H30.5678ZM33.2111 37.5C33.2111 38.4 33.9311 39.12 34.8311 39.12C35.7311 39.12 36.4711 38.4 36.4711 37.5C36.4711 36.6 35.7311 35.86 34.8311 35.86C33.9311 35.86 33.2111 36.6 33.2111 37.5ZM40.6784 32.52C40.6784 30.88 40.9584 29.62 41.5984 28.82C42.0384 28.24 42.6584 27.86 43.5984 27.86C44.5384 27.86 45.1384 28.24 45.5984 28.82C46.2184 29.62 46.4984 30.88 46.4984 32.52C46.4984 34.16 46.2184 35.42 45.5984 36.22C45.1384 36.8 44.5384 37.18 43.5984 37.18C42.6584 37.18 42.0384 36.8 41.5984 36.22C40.9784 35.42 40.6784 34.16 40.6784 32.52ZM38.2984 32.52C38.2984 34.24 38.5784 35.86 39.4584 37.18C40.2984 38.44 41.6584 39.3 43.5984 39.3C45.5384 39.3 46.8784 38.44 47.7184 37.18C48.5984 35.86 48.8784 34.24 48.8784 32.52C48.8784 30.8 48.5984 29.18 47.7184 27.86C46.8784 26.6 45.5384 25.74 43.5984 25.74C41.6584 25.74 40.2984 26.6 39.4584 27.86C38.5784 29.18 38.2984 30.8 38.2984 32.52Z" fill="#43BFD6"/>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" fill="none" viewBox="0 0 64 64"><rect width="64" height="64" fill="#D9F2F7" rx="32"/><path fill="#43BFD6" d="M24.3 29.26H21.86L19.34 36.22L16.76 29.26H14.2L18.16 39H20.48L24.3 29.26ZM30.5678 39V26.04H28.4878C28.2078 27.4 26.9278 28.44 25.0678 28.48V30.12H28.2078V39H30.5678ZM33.2111 37.5C33.2111 38.4 33.9311 39.12 34.8311 39.12C35.7311 39.12 36.4711 38.4 36.4711 37.5C36.4711 36.6 35.7311 35.86 34.8311 35.86C33.9311 35.86 33.2111 36.6 33.2111 37.5ZM40.6784 32.52C40.6784 30.88 40.9584 29.62 41.5984 28.82C42.0384 28.24 42.6584 27.86 43.5984 27.86C44.5384 27.86 45.1384 28.24 45.5984 28.82C46.2184 29.62 46.4984 30.88 46.4984 32.52C46.4984 34.16 46.2184 35.42 45.5984 36.22C45.1384 36.8 44.5384 37.18 43.5984 37.18C42.6584 37.18 42.0384 36.8 41.5984 36.22C40.9784 35.42 40.6784 34.16 40.6784 32.52ZM38.2984 32.52C38.2984 34.24 38.5784 35.86 39.4584 37.18C40.2984 38.44 41.6584 39.3 43.5984 39.3C45.5384 39.3 46.8784 38.44 47.7184 37.18C48.5984 35.86 48.8784 34.24 48.8784 32.52C48.8784 30.8 48.5984 29.18 47.7184 27.86C46.8784 26.6 45.5384 25.74 43.5984 25.74C41.6584 25.74 40.2984 26.6 39.4584 27.86C38.5784 29.18 38.2984 30.8 38.2984 32.52Z"/></svg>

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@ -1,4 +1 @@
<svg width="64" height="64" viewBox="0 0 64 64" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="64" height="64" rx="32" fill="#D9F2F7"/>
<path d="M24.3 29.26H21.86L19.34 36.22L16.76 29.26H14.2L18.16 39H20.48L24.3 29.26ZM30.5678 39V26.04H28.4878C28.2078 27.4 26.9278 28.44 25.0678 28.48V30.12H28.2078V39H30.5678ZM33.2111 37.5C33.2111 38.4 33.9311 39.12 34.8311 39.12C35.7311 39.12 36.4711 38.4 36.4711 37.5C36.4711 36.6 35.7311 35.86 34.8311 35.86C33.9311 35.86 33.2111 36.6 33.2111 37.5ZM40.6784 32.52C40.6784 30.88 40.9584 29.62 41.5984 28.82C42.0384 28.24 42.6584 27.86 43.5984 27.86C44.5384 27.86 45.1384 28.24 45.5984 28.82C46.2184 29.62 46.4984 30.88 46.4984 32.52C46.4984 34.16 46.2184 35.42 45.5984 36.22C45.1384 36.8 44.5384 37.18 43.5984 37.18C42.6584 37.18 42.0384 36.8 41.5984 36.22C40.9784 35.42 40.6784 34.16 40.6784 32.52ZM38.2984 32.52C38.2984 34.24 38.5784 35.86 39.4584 37.18C40.2984 38.44 41.6584 39.3 43.5984 39.3C45.5384 39.3 46.8784 38.44 47.7184 37.18C48.5984 35.86 48.8784 34.24 48.8784 32.52C48.8784 30.8 48.5984 29.18 47.7184 27.86C46.8784 26.6 45.5384 25.74 43.5984 25.74C41.6584 25.74 40.2984 26.6 39.4584 27.86C38.5784 29.18 38.2984 30.8 38.2984 32.52Z" fill="#43BFD6"/>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" fill="none" viewBox="0 0 64 64"><rect width="64" height="64" fill="#D9F2F7" rx="32"/><path fill="#43BFD6" d="M24.3 29.26H21.86L19.34 36.22L16.76 29.26H14.2L18.16 39H20.48L24.3 29.26ZM30.5678 39V26.04H28.4878C28.2078 27.4 26.9278 28.44 25.0678 28.48V30.12H28.2078V39H30.5678ZM33.2111 37.5C33.2111 38.4 33.9311 39.12 34.8311 39.12C35.7311 39.12 36.4711 38.4 36.4711 37.5C36.4711 36.6 35.7311 35.86 34.8311 35.86C33.9311 35.86 33.2111 36.6 33.2111 37.5ZM40.6784 32.52C40.6784 30.88 40.9584 29.62 41.5984 28.82C42.0384 28.24 42.6584 27.86 43.5984 27.86C44.5384 27.86 45.1384 28.24 45.5984 28.82C46.2184 29.62 46.4984 30.88 46.4984 32.52C46.4984 34.16 46.2184 35.42 45.5984 36.22C45.1384 36.8 44.5384 37.18 43.5984 37.18C42.6584 37.18 42.0384 36.8 41.5984 36.22C40.9784 35.42 40.6784 34.16 40.6784 32.52ZM38.2984 32.52C38.2984 34.24 38.5784 35.86 39.4584 37.18C40.2984 38.44 41.6584 39.3 43.5984 39.3C45.5384 39.3 46.8784 38.44 47.7184 37.18C48.5984 35.86 48.8784 34.24 48.8784 32.52C48.8784 30.8 48.5984 29.18 47.7184 27.86C46.8784 26.6 45.5384 25.74 43.5984 25.74C41.6584 25.74 40.2984 26.6 39.4584 27.86C38.5784 29.18 38.2984 30.8 38.2984 32.52Z"/></svg>

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 24 KiB

View File

@ -0,0 +1,17 @@
.head {
font-family: 'Montserrat Alternates', sans-serif;
color: #fff;
/* text-shadow: 3px 2px 1px black; */
margin-top: 100px;
line-height: 1.15;
font-size: 5.5rem;
font-weight: bold;
text-align: center;
}
@media (max-width: 600px) {
.head {
font-size: 2.5rem;
margin-top: 2em;
margin-bottom: 100px;
}
}

File diff suppressed because it is too large Load Diff