Skip to content

Commit 18db4ac

Browse files
committed
add(project):GaleriYah
1 parent 25f2e02 commit 18db4ac

File tree

7 files changed

+150
-1
lines changed

7 files changed

+150
-1
lines changed

_projects/5_project.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
layout: page
33
title: Piracy RPG
4-
description: A strategic naval exploration and combat game with procedural generation and advanced software design patterns
4+
description: A strategic naval exploration and combat game with procedural generation and advanced software design patterns.
55
img: assets/img/pirates_battle.jpeg
66
importance: 3
77
category: uni

_projects/7_project.md

Lines changed: 149 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,149 @@
1+
---
2+
layout: page
3+
title: GaleriYah
4+
description: An avant-garde photography portfolio.
5+
img: assets/img/GaleriYah.png
6+
importance: 1
7+
category: productivity
8+
---
9+
10+
## `GaleriYah` - Avant-Garde Photography Portfolio
11+
12+
> Experience photography through a new lens with GaleriYah, where avant-garde design meets seamless functionality. This Next.js-powered platform transforms the way we showcase and interact with visual art.
13+
14+
### `Technology Symphony`
15+
16+
Built with modern web technologies, GaleriYah orchestrates:
17+
- `Next.js 13` for lightning-fast performance
18+
- `Tailwind CSS` for stunning aesthetics
19+
- `Framer Motion` for fluid animations
20+
- `Supabase` for robust data management
21+
- `TypeScript` for code reliability
22+
23+
### `Visual Experience`
24+
25+
#### Dynamic Grid Layout
26+
27+
<details>
28+
<summary>Explore the Grid</summary>
29+
<div class="row justify-content-center">
30+
<div class="col-md-8">
31+
{% include figure.liquid path="assets/img/grid.jpg" title="Dynamic Grid Layout" class="img-fluid rounded z-depth-1" %}
32+
</div>
33+
</div>
34+
<div class="caption">
35+
Responsive grid system with dynamic sizing and elegant hover effects
36+
</div>
37+
</details>
38+
39+
#### Album Viewer
40+
41+
<details>
42+
<summary>Browse Albums</summary>
43+
<div class="row justify-content-center">
44+
<div class="col-md-8">
45+
{% include figure.liquid path="assets/img/albums.jpg" title="Album View" class="img-fluid rounded z-depth-1" %}
46+
</div>
47+
</div>
48+
<div class="caption">
49+
Horizontal scrolling album view with intuitive mouse wheel navigation
50+
</div>
51+
</details>
52+
53+
#### Photo Details
54+
55+
<details>
56+
<summary>View Photo Details</summary>
57+
<div class="row justify-content-center">
58+
<div class="col-md-8">
59+
{% include figure.liquid path="assets/img/photo.jpg" title="Photo Details" class="img-fluid rounded z-depth-1" %}
60+
</div>
61+
</div>
62+
<div class="caption">
63+
Immersive photo viewing experience with metadata and descriptions
64+
</div>
65+
</details>
66+
67+
### `Standout Features`
68+
69+
#### Supreme-Inspired Navigation
70+
One of GaleriYah's most distinctive features is its Supreme-inspired navigation system. The minimalist design combines with bold typography and smooth transitions to create an experience that's both functional and visually striking.
71+
72+
```javascript
73+
const MenuButton = () => (
74+
<button className="bg-white text-black font-bold text-xl py-2 px-4
75+
hover:bg-black hover:text-[#ED1C24] transition-colors duration-300">
76+
MENU
77+
</button>
78+
);
79+
```
80+
81+
#### Dynamic Photo Grid
82+
The photo grid adapts to content, creating visual interest through varied sizes and positions:
83+
84+
```javascript
85+
const getPhotoClassName = (index) => {
86+
const patterns = {
87+
large: "col-span-2 row-span-2",
88+
tall: "col-span-1 row-span-2",
89+
wide: "col-span-2 row-span-1",
90+
normal: "col-span-1 row-span-1"
91+
};
92+
// Dynamic pattern selection based on index
93+
return patterns[getPattern(index)];
94+
};
95+
```
96+
97+
### `Technical Highlights`
98+
99+
#### Smooth Scrolling Implementation
100+
```javascript
101+
useEffect(() => {
102+
const container = scrollContainerRef.current;
103+
const handleWheel = (e) => {
104+
e.preventDefault();
105+
container.scrollLeft += e.deltaY;
106+
};
107+
container?.addEventListener("wheel", handleWheel, { passive: false });
108+
return () => container?.removeEventListener("wheel", handleWheel);
109+
}, []);
110+
```
111+
112+
### `Development Journey`
113+
114+
Creating GaleriYah has been an exciting exploration of modern web technologies and design principles. The project challenged me to:
115+
- Implement complex grid layouts with dynamic sizing
116+
- Create smooth, performant animations
117+
- Design an intuitive yet avant-garde user interface
118+
- Integrate seamless data management with Supabase (that sucked :D)
119+
- Optimize image loading and delivery
120+
121+
### `Future Enhancements`
122+
123+
The purpose of this design is to make it the most minimalistic there is, so every enhancement should follow this principal, in other words, less is more!
124+
125+
For a deeper dive into the code and implementation:
126+
- **[GaleriYah GitHub Repository](https://github.com/andebugulin/galeriyah)**
127+
128+
### `Contributors`
129+
130+
<div id="contributors-list" style="display: flex; flex-wrap: wrap; justify-content: space-around; padding: 20px;">Loading contributors...</div>
131+
132+
<script>
133+
async function fetchContributors() {
134+
const url = 'https://api.github.com/repos/andebugulin/galeriyah/contributors';
135+
const response = await fetch(url);
136+
const contributors = await response.json();
137+
138+
const contributorsHtml = contributors.map(contributor =>
139+
`<div class="contributor" style="margin: 10px; text-align: center;">
140+
<img src="${contributor.avatar_url}" alt="${contributor.login}" style="width: 100px; height: 100px; border-radius: 50%; display: block; margin: auto;">
141+
<p><a href="${contributor.html_url}" target="_blank">${contributor.login}</a></p>
142+
</div>`
143+
).join('');
144+
145+
document.getElementById('contributors-list').innerHTML = contributorsHtml;
146+
}
147+
148+
fetchContributors();
149+
</script>

assets/img/GaleriYah.png

659 KB
Loading

assets/img/albums.jpg

129 KB
Loading

assets/img/grid.jpg

655 KB
Loading

assets/img/photo.jpg

393 KB
Loading
1.03 MB
Loading

0 commit comments

Comments
 (0)