diff --git a/app/(pages)/software-work/page.jsx b/app/(pages)/software-work/page.jsx new file mode 100644 index 0000000..b934b4c --- /dev/null +++ b/app/(pages)/software-work/page.jsx @@ -0,0 +1,74 @@ +"use client"; +// import { useState } from "react"; +import Link from "next/link"; +import Image from "next/image" +import styles from "./software-work.module.scss"; +// import styles from "./mixins.scss" + +// import .scss file (use styles) + +export default function SoftwareWork() { + // js code outside of return + + return ( + // put html stuff inside div +
+
+
+

Software Work

+

+ Our Software team focuses mainly on the embedded software and + writing our custom operating system on the orbital platform called + IntelliSat. IntelliSat is written fully in C, has bare metal + drivers, and uses FreeRTOS to schedule mission tasks. Work in + Software involves using STM32CubeIDE, looking at datasheets, + documentation, looking at schematics, and embedded C +

+ +
+ + IntelliSat - GitHub + + + + Radio Controller - GitHub + + + MGT Controller - GitHub + +
+
+ +
+ Github Logo +
+
+
+ ); +} diff --git a/app/(pages)/software-work/software-work.module.scss b/app/(pages)/software-work/software-work.module.scss new file mode 100644 index 0000000..3a45515 --- /dev/null +++ b/app/(pages)/software-work/software-work.module.scss @@ -0,0 +1,128 @@ + +.pageBody +{ + // background: linear-gradient(180deg, #000138 0%, #172B54 100%); + background: var(--navy); + box-shadow: 0 5px 50px 0 rgba(0, 0, 0, 0.1); + margin: 0; + padding: 0; +} + +.content +{ + display: flex; + flex-direction: row; + justify-content: space-between; + align-items: center; + gap: 3rem; + padding: 4rem 6rem; + // makes the page flex items align with window size (let me know to remove this) + max-width: 90rem; + margin: 0 auto; +} + +// puts the header, description, and buttons to the left +.LeftContainer +{ + display: flex; + flex-direction: column; + gap: 1.5rem; + flex: 1; +} + +.softwareHeader +{ + color: #FFF; + font-size: 3rem; + font-style: normal; + font-weight: 500; + line-height: normal; + size: 3rem; + position: sticky; +} + + +.softwareDescription +{ + height: 9.75rem; + font-size: 1.25rem; + font-style: normal; + line-height: normal; + font-family: "Space Grotesk"; + color: var(--white); + width: 39.375rem; + max-width: 45rem; + margin-top: 50%; + margin-top: 0; +} + +.SSSButtonsContainer +{ + display: flex; + flex-direction: column; + justify-content: center; + align-items: flex-start; + gap: 1.5rem; + +} + +.SSSButton +{ + position: relative; + overflow: hidden; + + display: flex; + align-items: center; + justify-content: center; + border-radius: 0.3125rem; + border: 0.5px solid var(--Off-White); + background: rgba(247, 247, 247, 0.90); + box-shadow: 0 5px 50px 0 rgba(0, 0, 0, 0.10); + color: var(--dark-gray); // change + font-family: "Space Grotesk"; + font-size: 1rem; + font-weight: 500; + padding: 0.8125rem 2rem; + min-width: 19.6875rem; // Allows the buttons to be even-sized horizontally no matter how long text is + cursor: pointer; + text-decoration: none; +} +.SSSButton::before +{ + content: ""; + position: absolute; + inset: 0; + background: rgba(0, 0, 0, 0.17); + transform-origin: 0% 50%; + transform: scaleX(0); // slide is off + transition: transform 0.3s ease; +} +.SSSButton:hover::before{ + animation: slideOverlay 0.3s forwards; +} + +@keyframes slideOverlay +{ + from{ + transform: scaleX(0); + } + to{ + transform: scaleX(1); // slide is on + } +} +// ^^used to for translation smoothly + + +.SVGContainer +{ + display: flex; + align-self: center; + padding-right: 4rem; + flex-shrink: 0; +} + +// :root{ +// --Blue-Gradiant: linear-gradient(180deg, #000138 0%, #172B54 100%); +// --Off-White:#F7F7F7; +// --Grey: #575757; +// } diff --git a/package-lock.json b/package-lock.json index 9fde2cd..82b9333 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,8 +15,9 @@ }, "devDependencies": { "@eslint/eslintrc": "^3", - "eslint": "^9", - "eslint-config-next": "15.4.4" + "eslint": "^9.39.2", + "eslint-config-next": "15.4.4", + "prettier": "^3.8.1" } }, "node_modules/@emnapi/core": { @@ -53,9 +54,9 @@ } }, "node_modules/@eslint-community/eslint-utils": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz", - "integrity": "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==", + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz", + "integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==", "dev": true, "license": "MIT", "dependencies": { @@ -95,13 +96,13 @@ } }, "node_modules/@eslint/config-array": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.0.tgz", - "integrity": "sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==", + "version": "0.21.1", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.1.tgz", + "integrity": "sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@eslint/object-schema": "^2.1.6", + "@eslint/object-schema": "^2.1.7", "debug": "^4.3.1", "minimatch": "^3.1.2" }, @@ -110,19 +111,22 @@ } }, "node_modules/@eslint/config-helpers": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.3.0.tgz", - "integrity": "sha512-ViuymvFmcJi04qdZeDc2whTHryouGcDlaxPqarTD0ZE10ISpxGUVZGZDx4w01upyIynL3iu6IXH2bS1NhclQMw==", + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.2.tgz", + "integrity": "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==", "dev": true, "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.17.0" + }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, "node_modules/@eslint/core": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.15.1.tgz", - "integrity": "sha512-bkOp+iumZCCbt1K1CmWf0R9pM5yKpDv+ZXtvSyQpudrI9kuFLp+bM2WOPXImuD/ceQuaa8f5pj93Y7zyECIGNA==", + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz", + "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -157,9 +161,9 @@ } }, "node_modules/@eslint/js": { - "version": "9.32.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.32.0.tgz", - "integrity": "sha512-BBpRFZK3eX6uMLKz8WxFOBIFFcGFJ/g8XuwjTHCqHROSIsopI+ddn/d5Cfh36+7+e5edVS8dbSHnBNhrLEX0zg==", + "version": "9.39.2", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.2.tgz", + "integrity": "sha512-q1mjIoW1VX4IvSocvM/vbTiveKC4k9eLrajNEuSsmjymSDEbpGddtpfOoN7YGAqBK3NG+uqo8ia4PDTt8buCYA==", "dev": true, "license": "MIT", "engines": { @@ -170,9 +174,9 @@ } }, "node_modules/@eslint/object-schema": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz", - "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==", + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.7.tgz", + "integrity": "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==", "dev": true, "license": "Apache-2.0", "engines": { @@ -180,13 +184,13 @@ } }, "node_modules/@eslint/plugin-kit": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.4.tgz", - "integrity": "sha512-Ul5l+lHEcw3L5+k8POx6r74mxEYKG5kOb6Xpy2gCRW6zweT6TEhAf8vhxGgjhqrd/VO/Dirhsb+1hNpD1ue9hw==", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz", + "integrity": "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@eslint/core": "^0.15.1", + "@eslint/core": "^0.17.0", "levn": "^0.4.1" }, "engines": { @@ -2695,25 +2699,24 @@ } }, "node_modules/eslint": { - "version": "9.32.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.32.0.tgz", - "integrity": "sha512-LSehfdpgMeWcTZkWZVIJl+tkZ2nuSkyyB9C27MZqFWXuph7DvaowgcTvKqxvpLW1JZIk8PN7hFY3Rj9LQ7m7lg==", + "version": "9.39.2", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.2.tgz", + "integrity": "sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", - "@eslint/config-array": "^0.21.0", - "@eslint/config-helpers": "^0.3.0", - "@eslint/core": "^0.15.0", + "@eslint/config-array": "^0.21.1", + "@eslint/config-helpers": "^0.4.2", + "@eslint/core": "^0.17.0", "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "9.32.0", - "@eslint/plugin-kit": "^0.3.4", + "@eslint/js": "9.39.2", + "@eslint/plugin-kit": "^0.4.1", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", "@types/estree": "^1.0.6", - "@types/json-schema": "^7.0.15", "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.6", @@ -4633,6 +4636,22 @@ "node": ">= 0.8.0" } }, + "node_modules/prettier": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.1.tgz", + "integrity": "sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==", + "dev": true, + "license": "MIT", + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, "node_modules/prop-types": { "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", diff --git a/public/Vector.svg b/public/Vector.svg new file mode 100644 index 0000000..e5cf31a --- /dev/null +++ b/public/Vector.svg @@ -0,0 +1,3 @@ + + +