-
-
+
SecCodeSmith
diff --git a/src/data/randomCodeLineData.ts b/src/data/randomCodeLineData.ts
new file mode 100644
index 0000000..98fa2cb
--- /dev/null
+++ b/src/data/randomCodeLineData.ts
@@ -0,0 +1,102 @@
+export const randomCodeLineData :string[] = [
+ 'print("Hello, world!")',
+ 'int main() { return 0; }',
+ 'std::vector
v{1, 2, 3, 4};',
+ 'Console.WriteLine(\"Enter your name:\");',
+ 'for i in range(10):',
+ 'char* buffer = malloc(256);',
+ 'using (var fs = new FileStream(path, FileMode.Open))',
+ 'if (x > y) x = y;',
+ 'def factorial(n):',
+ 'double result = pow(x, y);',
+ 'string greeting = \"Hi there\";',
+ 'auto it = map.find(key);',
+ 'List names = new List();',
+ 'while (ptr != nullptr) {',
+ 'with open(\"file.txt\", \"r\") as f:',
+ 'int *arr = new int[10];',
+ 'var dict = new Dictionary();',
+ 'std::cout << \"Value: \" << value << std::endl;',
+ 'await Task.Delay(1000);',
+ 'lambda x: x * x',
+ 'float pi = 3.14159f;',
+ 'bool success = TryParse(input, out result);',
+ 'try { /* ... */ } catch (Exception ex) { }',
+ 'def hello(name=\"User\"):',
+ 'constexpr int MAX = 100;',
+ 'public class Person { }',
+ 'if __name__ == \"__main__\":',
+ 'switch(choice) { case 1: break; }',
+ 'var json = JsonConvert.DeserializeObject(data);',
+ 'std::sort(v.begin(), v.end());',
+ 'Console.ReadKey();',
+ 'for (int i = 0; i < n; i++)',
+ 'x = x[::-1]',
+ 'char c = getchar();',
+ '[Obsolete(\"Use NewMethod instead\")]',
+ 'str_list = [s.upper() for s in strings]',
+ 'uint64_t id = generate_id();',
+ 'public interface IService { }',
+ 'import os',
+ 'static void Helper() { }',
+ 'client.SendAsync(request);',
+ 'matrix[i][j] = i * j;',
+ 'def merge(a, b): return a + b',
+ 'std::unique_ptr p = std::make_unique();',
+ 'Task.Run(() => DoWork());',
+ 'with lock(mutex):',
+ 'vector.push_back(elem);',
+ 'string.Join(\", \", list)',
+ 'if (obj is MyClass mc) { }',
+ 'os.remove(\"temp.txt\")',
+ 'char16_t ch = u\'A\';',
+ 'public static readonly string ID = Guid.NewGuid().ToString();',
+ 'def fib(n): return fib(n-1) + fib(n-2)',
+ 'memcpy(dest, src, size);',
+ 'foreach (var item in collection) { }',
+ 'assert(x != null);',
+ 'std::thread t([](){ doWork(); });',
+ '[Serializable]',
+ 'lst.append(item)',
+ 'GC.Collect();',
+ 'auto lambda = [](int x){ return x+1; };',
+ 'public override string ToString() => Name;',
+ 'if (!File.Exists(path)) File.Create(path);',
+ 'double average = accumulate(v.begin(), v.end(), 0.0) / v.size();',
+ 'using System.Text;',
+ 'def decorator(func):',
+ 'for (auto &p : pairs) { }',
+ 'var query = from x in db.Items select x;',
+ 'bytes_data = b\"\\x00\\xFF\"',
+ 'cout << std::hex << n;',
+ 'string.Format(\"{0}, {1}\", a, b);',
+ 'import sys, json',
+ 'bool isEmpty = list.Count == 0;',
+ 'std::map mp;',
+ 'Console.ForegroundColor = ConsoleColor.Green;',
+ 'def prime(n):',
+ 'int score = Random().Next(0, 100);',
+ 'var path = Path.Combine(dir, file);',
+ 'auto now = std::chrono::system_clock::now();',
+ 'if (val?.Length > 0) { }',
+ 'with session.begin():',
+ 'list primes;',
+ 'public event EventHandler Clicked;',
+ 'x, y = y, x',
+ 'char16_t* wstr = L\"wide\";',
+ 'dynamic obj = new ExpandoObject();',
+ 'assert(sizeof(int) == 4);',
+ 'Console.Write($\"Count: {count}\");',
+ 'std::tie(a, b) = getPair();',
+ 'byte[] buffer = new byte[1024];',
+ 'def async_func():',
+ 'virtual void Render() override;',
+ 'os.getcwd()',
+ 'for k, v in dict.items():',
+ 'std::shared_ptr sp = ptr;',
+ 'public bool Equals(Person other) => Id==other.Id;',
+ 'return x is not None',
+ 'size_t len = strlen(str);',
+ 'var enumerable = Enumerable.Range(1,10);',
+ 'float angle = atan2(y, x);',
+]
\ No newline at end of file
diff --git a/src/data/skillCard.ts b/src/data/skillCardData.ts
similarity index 86%
rename from src/data/skillCard.ts
rename to src/data/skillCardData.ts
index a16e40e..45597c5 100644
--- a/src/data/skillCard.ts
+++ b/src/data/skillCardData.ts
@@ -7,7 +7,8 @@ export const skillCardData: SkillCardProps[] = [
skills: [
{ name: "C/C++", icon: "devicon-cplusplus-plain" },
{ name: "Python", icon: "devicon-python-plain" },
- { name: ".NET", icon: "devicon-dotnetcore-plain" }
+ { name: ".NET", icon: "devicon-dotnetcore-plain" },
+ { name: "C#", icon: "devicon-csharp-plain" },
]
},
{
@@ -24,7 +25,7 @@ export const skillCardData: SkillCardProps[] = [
categoryTitle: "Data & ML",
skills: [
{ name: "Pandas", icon: "devicon-pandas-plain" },
- { name: "Scikit-learn", icon: "devicon-sklearn-plain" },
+ { name: "Scikit-learn", icon: "devicon-scikitlearn-plain" },
{ name: "Scikit-image", icon: "fas fa-image" },
{ name: "PyTorch", icon: "devicon-pytorch-plain" },
{ name: "OpenCV", icon: "devicon-opencv-plain" }
@@ -48,11 +49,12 @@ export const skillCardData: SkillCardProps[] = [
skills: [
{ name: "Docker", icon: "devicon-docker-plain" },
{ name: "Docker-compose", icon: "fas fa-layer-group" },
- { name: ">Linux CLI", icon: "devicon-bash-plain" },
+ { name: "Linux CLI", icon: "devicon-bash-plain" },
{ name: "Git", icon: "devicon-git-plain" },
{ name: "CI/CD", icon: "fas fa-cogs" },
{ name: "Cmake", icon: "devicon-cmake-plain" },
{ name: "Linux", icon: "devicon-linux-plain" },
+ { name: "Jenkins", icon: "devicon-jenkins-plain" },
]
}
];
\ No newline at end of file
diff --git a/src/data/socialLinkData.ts b/src/data/socialLinkData.ts
new file mode 100644
index 0000000..0185a00
--- /dev/null
+++ b/src/data/socialLinkData.ts
@@ -0,0 +1,24 @@
+import {type socialLink} from "../components/Footer";
+
+export const socialLinkData: socialLink[] = [
+ {
+ icon: "fab fa-github",
+ url: ""
+ },
+ {
+ icon: "fab fa-linkedin",
+ url: ""
+ },
+ {
+ icon: "fab fa-twitter",
+ url: ""
+ },
+ {
+ icon: "fab fa-discord",
+ url: ""
+ },
+ {
+ icon: "fas fa-envelope",
+ url: ""
+ },
+]
\ No newline at end of file
diff --git a/src/index.css b/src/index.css
index 0bf1566..62c1518 100644
--- a/src/index.css
+++ b/src/index.css
@@ -14,7 +14,7 @@
body {
background-color: var(--primary-dark);
color: var(--text-light);
- background-image: url('../images/background.png');
+ background-image: url('assets/images/background.png');
background-repeat: round;
background-size: 300px 300px;
background-position: 0 0;
@@ -84,11 +84,12 @@ body::before {
width: 100%;
}
+.logo-image{
+ height: 2rem;
+}
/* Logo styling */
.logo-icon {
- font-size: 2rem;
- color: var(--accent-fire);
- text-shadow: var(--glow-effect);
+ height: 2rem;
position: relative;
display: inline-flex;
align-items: center;
diff --git a/src/main.tsx b/src/main.tsx
index cbe1cdf..88e1744 100644
--- a/src/main.tsx
+++ b/src/main.tsx
@@ -1,7 +1,7 @@
import React from 'react'
import ReactDOM from 'react-dom/client'
import App from './App.tsx'
-import './index.css'
+import '@styles/index.scss'
ReactDOM.createRoot(document.getElementById('root')!).render(
diff --git a/src/pages/Home.module.css b/src/pages/Home.module.css
deleted file mode 100644
index 06cb79f..0000000
--- a/src/pages/Home.module.css
+++ /dev/null
@@ -1,247 +0,0 @@
-/* Hero Section */
-.hero {
- height: 100vh;
- position: relative;
- overflow: hidden;
- display: flex;
- align-items: center;
- padding-top: 76px;
- /* Account for navbar height */
-}
-
-.hero::before {
- content: "";
- position: absolute;
- top: 0;
- left: 0;
- width: 100%;
- height: 100%;
- background: url('/api/placeholder/1200/800') center/cover no-repeat;
- opacity: 0.15;
- filter: brightness(0.5) contrast(1.2);
- z-index: -1;
-}
-
-.title-main {
- font-size: 4rem;
- font-weight: 700;
- position: relative;
- display: inline-block;
-}
-
-.title-main::before {
- content: "< ";
- color: var(--accent-fire);
- opacity: 0.8;
-}
-
-.title-main::after {
- content: " />";
- color: var(--accent-fire);
- opacity: 0.8;
-}
-
-.subtitle {
- font-size: 1.6rem;
- color: var(--text-ash);
- margin-bottom: 2rem;
-}
-
-/* Binary Background */
-.binary-bg {
- position: absolute;
- top: 0;
- left: 0;
- width: 100%;
- height: 100%;
- z-index: -1;
- opacity: 0.07;
- overflow: hidden;
-}
-
-.binary-line {
- position: absolute;
- font-family: 'Fira Code', monospace;
- color: var(--accent-fire);
- font-size: 1rem;
- animation: fall linear infinite;
- opacity: 0.7;
-}
-
-/* Button Styling */
-.btn-primary {
- background: linear-gradient(45deg, var(--accent-dragon), var(--accent-fire));
- border: none;
- padding: 0.75rem 2rem;
- font-weight: 600;
- text-transform: uppercase;
- letter-spacing: 1px;
- box-shadow: 0 4px 15px rgba(139, 0, 0, 0.3);
- transition: all 0.3s ease;
- position: relative;
- overflow: hidden;
-}
-
-.btn-primary:hover {
- transform: translateY(-3px);
- box-shadow: 0 7px 25px rgba(139, 0, 0, 0.5);
- background-color: var(--accent-fire);
- background-image: none;
-}
-
-.btn-primary::before {
- content: "";
- position: absolute;
- top: 0;
- left: -100%;
- width: 100%;
- height: 100%;
- background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.2), transparent);
- transition: all 0.6s ease;
-}
-
-.btn-primary:hover::before {
- left: 100%;
-}
-
-/* Skills Section */
-.skills-section {
- padding: 6rem 0;
- background-color: var(--secondary-dark);
- position: relative;
-}
-
-.section-title {
- text-align: center;
- font-size: 2.5rem;
- margin-bottom: 3rem;
- position: relative;
- display: inline-block;
-}
-
-.section-title::after {
- content: "";
- position: absolute;
- width: 80px;
- height: 3px;
- background: var(--accent-fire);
- bottom: -10px;
- left: 50%;
- transform: translateX(-50%);
- box-shadow: var(--glow-effect);
-}
-
-.card {
- background-color: var(--card-bg);
- border: 1px solid var(--card-border);
- border-radius: 8px;
- transition: all 0.3s ease;
- height: 100%;
- position: relative;
- overflow: hidden;
-}
-
-.card:hover {
- transform: translateY(-10px);
- border-color: rgba(255, 100, 0, 0.3);
- box-shadow: 0 10px 30px rgba(0, 0, 0, 0.5);
-}
-
-.card::before {
- content: "";
- position: absolute;
- width: 100%;
- height: 5px;
- top: 0;
- left: 0;
- background: linear-gradient(to right, var(--accent-dragon), var(--accent-fire));
-}
-
-.card-header {
- background-color: transparent;
- border-bottom: 1px solid rgba(255, 255, 255, 0.1);
- display: flex;
- align-items: center;
- gap: 10px;
-}
-
-.category-icon {
- color: var(--accent-fire);
- font-size: 1.5rem;
-}
-
-.category-title {
- font-size: 1.4rem;
- margin-bottom: 0;
-}
-
-.skill-item {
- margin-bottom: 12px;
- display: flex;
- align-items: center;
- gap: 12px;
-}
-
-.skill-icon {
- color: var(--accent-fire);
- font-size: 1.5rem;
- min-width: 24px;
- display: flex;
- align-items: center;
- justify-content: center;
-}
-
-.skill-icon i {
- display: inline-flex;
- align-items: center;
- justify-content: center;
-}
-
-.skill-name {
- color: var(--text-ash);
- font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
-}
-
-/* Blinking cursor effect */
-.blinking-cursor {
- display: inline-block;
- width: 10px;
- height: 24px;
- background-color: var(--accent-fire);
- margin-left: 5px;
- animation: blink 1s step-end infinite;
- box-shadow: var(--glow-effect);
-}
-
-@keyframes blink {
-
- 0%,
- 100% {
- opacity: 1;
- }
-
- 50% {
- opacity: 0;
- }
-}
-
-/* Particles effect */
-.particles {
- position: absolute;
- top: 0;
- left: 0;
- width: 100%;
- height: 100%;
- pointer-events: none;
- z-index: 0;
-}
-
-.particle {
- position: absolute;
- width: 3px;
- height: 3px;
- background-color: var(--accent-fire);
- border-radius: 50%;
- opacity: 0;
- animation: rise linear forwards;
-}
\ No newline at end of file
diff --git a/src/pages/Home.tsx b/src/pages/Home.tsx
index 7e10722..508dfbe 100644
--- a/src/pages/Home.tsx
+++ b/src/pages/Home.tsx
@@ -3,40 +3,35 @@ import { Link } from 'react-router-dom';
import styles from '@styles/Home.module.scss';
import SkillCard from '../components/SkillCard'
-import { skillCardData } from '../data/skillCard';
+import { skillCardData } from '../data/skillCardData';
+import { randomCodeLineData } from '../data/randomCodeLineData';
export const Home = () => {
const skills = skillCardData;
-
+ const randomCodeLines = randomCodeLineData;
useEffect(() => {
- // Create binary background
const createBinaryBg = () => {
const binaryBg = document.getElementById('binary-bg');
if (!binaryBg) return;
-
- const chars = '01';
const linesCount = 20;
- // Clear existing lines
binaryBg.innerHTML = '';
for (let i = 0; i < linesCount; i++) {
+
const line = document.createElement('div');
line.className = styles.binaryLine;
line.style.left = `${Math.random() * 100}%`;
line.style.animationDuration = `${Math.random() * 10 + 15}s`;
- let binaryString = '';
- for (let j = 0; j < 100; j++) {
- binaryString += chars.charAt(Math.floor(Math.random() * chars.length));
- }
+ let lineNumber = Math.floor(Math.random() * randomCodeLines.length);
+ let binaryString = randomCodeLines[lineNumber];
line.textContent = binaryString;
binaryBg.appendChild(line);
}
};
- // Create particles effect (ember/spark effect)
const createParticles = () => {
const particlesContainer = document.getElementById('particles');
if (!particlesContainer) return;
@@ -127,7 +122,7 @@ export const Home = () => {
- {skills.map((skill, index) => (
+ {skills.map((skill) => (