Skip to content

Commit f489325

Browse files
committed
feat: project page is improved
1 parent 0e36b90 commit f489325

File tree

12 files changed

+479
-289
lines changed

12 files changed

+479
-289
lines changed
291 KB
Loading

public/projects/nocturnote.txt

Lines changed: 68 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,68 @@
1-
Nocturnote is a sleek, modern, and highly customizable note-taking application built with Electron, Svelte, TypeScript, and Tailwind CSS.
2-
It offers a distraction-free writing environment with powerful features.
3-
4-
![Nocturnote Notepad Mode](/images/projects/nocturnote.png)
5-
> Notepad Mode in Nocturnote
6-
7-
**Key Features:**
8-
* **Customizable Interface:** Adjust font family, size, weight, line height, word wrap, and line numbers.
9-
* **File Management:** Create new notes, open existing `.txt` or `.md` files, and save work.
10-
* **Search and Replace:** Quickly find and replace text.
11-
* **Notepad Mode:** Classic notepad aesthetic.
12-
* **Rain Mode:** A unique visual effect.
13-
* **Status Bar:** Displays line/column, character count, and encoding.
14-
* **Cross-Platform:** Runs seamlessly across different operating systems.
15-
16-
**Technologies Used:**
17-
* **Electron:** For cross-platform desktop applications.
18-
* **Svelte:** Modern JavaScript framework for UIs.
19-
* **TypeScript:** For type-safe JavaScript.
20-
* **Tailwind CSS:** Utility-first CSS framework.
21-
* **electron-vite:** Fast development setup for Electron apps.
22-
23-
**Installation:**
24-
Requires Node.js and npm/yarn.
25-
1. Clone the repository: `git clone https://github.com/fezcode/nocturnote.git`
26-
2. Navigate to the directory: `cd nocturnote`
27-
3. Install dependencies: `npm install`
28-
29-
**Usage:**
30-
* **Development:** `npm run dev`
31-
* **Building:** `npm run build` (creates distributable packages in `out` directory)
32-
* Specific platforms: `npm run build:win`, `npm run build:mac`, `npm run build:linux`
33-
* **Other Scripts:** `npm run format`, `npm run lint`, `npm run typecheck`
34-
35-
**License:** Distributed under the MIT License.
36-
37-
**Project Link:** [https://github.com/fezcode/nocturnote](https://github.com/fezcode/nocturnote)
1+
Nocturnote is a sleek, modern, and highly customizable note-taking application designed for the minimalists who crave power. Built with the robustness of **Electron** and the agility of **Svelte**, it bridges the gap between a simple scratchpad and a full-fledged editor.
2+
3+
> "A distraction-free writing environment that adapts to your state of flow, not the other way around."
4+
5+
## Visual Showcase
6+
7+
![Nocturnote Notepad Mode - A clean, dark interface for focused writing](/images/projects/nocturenote-header.webp)
8+
9+
## Core Philosophy
10+
11+
Nocturnote was born from a frustration with bloated text editors. It focuses on:
12+
* **Immediacy:** Opens instantly.
13+
* **Clarity:** UI that recedes when you're typing.
14+
* **Flexibility:** From a retro "Notepad" aesthetic to a cyberpunk "Rain Mode".
15+
16+
## Key Features
17+
18+
* **Customizable Typography:** Fine-tune your font family, size, weight, and line height to match your reading preferences.
19+
* **Seamless File Management:** Native support for `.txt` and `.md` files with auto-save capabilities.
20+
* **Advanced Search:** Regex-powered search and replace for power users.
21+
* **Visual Modes:** Switch between a classic light aesthetic or the immersive dark mode with digital rain effects.
22+
* **Information Bar:** Real-time stats on line/column position, character count, and file encoding.
23+
24+
## Architecture & Tech Stack
25+
26+
Nocturnote leverages a modern stack to ensure performance and cross-platform compatibility:
27+
28+
* **Electron:** Provides the native desktop shell.
29+
* **Svelte:** Delivers a reactive, DOM-efficient UI without the virtual DOM overhead.
30+
* **TypeScript:** Ensures code reliability and maintainability.
31+
* **Tailwind CSS:** Enables rapid styling and theming.
32+
* **Electron-Vite:** A blazing fast build tool optimized for Electron development.
33+
34+
## Getting Started
35+
36+
### Installation
37+
Ensure you have Node.js installed, then:
38+
39+
```bash
40+
# Clone the repository
41+
git clone https://github.com/fezcode/nocturnote.git
42+
43+
# Navigate to the directory
44+
cd nocturnote
45+
46+
# Install dependencies
47+
npm install
48+
```
49+
50+
### Development
51+
To start the app in development mode with hot-reloading:
52+
53+
```bash
54+
npm run dev
55+
```
56+
57+
### Building for Production
58+
Create distributable binaries for your OS:
59+
60+
```bash
61+
# Build for all platforms
62+
npm run build
63+
64+
# Or specific platforms
65+
npm run build:win
66+
npm run build:mac
67+
npm run build:linux
68+
```

public/projects/projects.piml

Lines changed: 27 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@
33
(slug) nocturnote
44
(title) Nocturnote
55
(size) 2
6-
(link) https://github.com/fezcode/nocturnote
6+
(repo_link) https://github.com/fezcode/nocturnote
7+
(demo_link) https://github.com/fezcode/nocturnote
78
(pinned) true
89
(isActive) true
910
(technologies)
@@ -14,13 +15,14 @@
1415
> Editor
1516
(shortDescription) Nocturnote is a sleek, modern, and highly customizable note-taking application built with Electron, Svelte, TypeScript, and Tailwind CSS.
1617
(date) 2025-12-01
17-
(image) /images/defaults/visuals-2TS23o0-pUc-unsplash.jpg
18+
(image) /images/projects/nocturenote-header.webp
1819

1920
> (project)
2021
(slug) fezcodex
2122
(title) fezcodex
2223
(size) 1
23-
(link) https://github.com/fezcode/fezcode.github.io
24+
(repo_link) https://github.com/fezcode/fezcode.github.io
25+
(demo_link) https://fezcode.com/about
2426
(pinned) true
2527
(isActive) true
2628
(technologies)
@@ -37,7 +39,8 @@
3739
(slug) piml
3840
(title) piml
3941
(size) 1
40-
(link) https://github.com/fezcode/piml
42+
(repo_link) https://github.com/fezcode/piml
43+
(demo_link) /apps/piml-lab
4144
(pinned) true
4245
(isActive) true
4346
(technologies)
@@ -50,7 +53,7 @@
5053
(slug) bm
5154
(title) bm - bookmark manager
5255
(size) 1
53-
(link) https://github.com/fezcode/bm
56+
(repo_link) https://github.com/fezcode/bm
5457
(pinned) true
5558
(isActive) true
5659
(technologies)
@@ -64,7 +67,7 @@
6467
(slug) villain-couch
6568
(title) Villain Couch
6669
(size) 2
67-
(link) https://github.com/fezcode/Villain-Couch
70+
(repo_link) https://github.com/fezcode/Villain-Couch
6871
(pinned) true
6972
(isActive) true
7073
(technologies)
@@ -79,7 +82,8 @@
7982
(slug) go-piml
8083
(title) go-piml
8184
(size) 1
82-
(link) https://github.com/fezcode/go-piml
85+
(demo_link) https://pkg.go.dev/github.com/fezcode/go-piml
86+
(repo_link) https://github.com/fezcode/go-piml
8387
(pinned) false
8488
(isActive) true
8589
(technologies)
@@ -94,7 +98,8 @@
9498
(slug) piml.js
9599
(title) piml.js
96100
(size) 1
97-
(link) https://github.com/fezcode/piml.js
101+
(demo_link) https://www.npmjs.com/package/piml
102+
(repo_link) https://github.com/fezcode/piml.js
98103
(pinned) false
99104
(isActive) true
100105
(technologies)
@@ -109,7 +114,7 @@
109114
(slug) doku
110115
(title) doku.js
111116
(size) 1
112-
(link) https://github.com/fezcode/doku.js
117+
(repo_link) https://github.com/fezcode/doku.js
113118
(pinned) true
114119
(isActive) true
115120
(technologies)
@@ -124,7 +129,7 @@
124129
(slug) stroque
125130
(title) Stroque
126131
(size) 1
127-
(link) https://github.com/fezcode/Stroque
132+
(repo_link) https://github.com/fezcode/Stroque
128133
(pinned) false
129134
(isActive) true
130135
(technologies)
@@ -138,7 +143,7 @@
138143
(slug) scrappy
139144
(title) Scrappy.js
140145
(size) 1
141-
(link) https://github.com/fezcode/scrappy
146+
(repo_link) https://github.com/fezcode/scrappy
142147
(pinned) false
143148
(isActive) false
144149
(technologies)
@@ -151,7 +156,7 @@
151156
(slug) piml-highlighter
152157
(title) PIML Syntax Highlighter for VS Code
153158
(size) 2
154-
(link) https://github.com/fezcode/piml-highlighter/
159+
(repo_link) https://github.com/fezcode/piml-highlighter/
155160
(pinned) false
156161
(isActive) true
157162
(technologies)
@@ -167,7 +172,7 @@
167172
(slug) go-homo-sapiens-time
168173
(title) Go Homo Sapiens Time
169174
(size) 1
170-
(link) https://github.com/fezcode/go-homo-sapiens-time
175+
(repo_link) https://github.com/fezcode/go-homo-sapiens-time
171176
(pinned) false
172177
(isActive) true
173178
(technologies)
@@ -180,7 +185,8 @@
180185
(slug) go-tournament-brackets
181186
(title) Go Tournament Bracket Generator Lib
182187
(size) 1
183-
(link) https://github.com/fezcode/go-tournament-brackets
188+
(demo_link) https://pkg.go.dev/github.com/fezcode/go-tournament-brackets
189+
(repo_link) https://github.com/fezcode/go-tournament-brackets
184190
(pinned) false
185191
(isActive) true
186192
(technologies)
@@ -193,7 +199,8 @@
193199
(slug) open-tab-with-respect
194200
(title) Open Tab with Respect
195201
(size) 1
196-
(link) https://github.com/fezcode/open-tab-with-respect
202+
(demo_link) https://addons.mozilla.org/en-US/firefox/addon/open-tab-with-respect/
203+
(repo_link) https://github.com/fezcode/open-tab-with-respect
197204
(pinned) false
198205
(isActive) true
199206
(technologies)
@@ -210,7 +217,8 @@
210217
(slug) clipboard-concat
211218
(title) Clipboard Concat
212219
(size) 1
213-
(link) https://github.com/fezcode/clipboard-concat
220+
(demo_link) https://addons.mozilla.org/en-US/firefox/addon/clipboard-concat/
221+
(repo_link) https://github.com/fezcode/clipboard-concat
214222
(pinned) false
215223
(isActive) true
216224
(technologies)
@@ -227,7 +235,7 @@
227235
(slug) boxer
228236
(title) Boxer
229237
(size) 2
230-
(link) https://github.com/fezcode/boxer
238+
(repo_link) https://github.com/fezcode/boxer
231239
(pinned) false
232240
(isActive) false
233241
(technologies)
@@ -245,7 +253,8 @@
245253
(slug) firefox-themes
246254
(title) Firefox Themes
247255
(size) 1
248-
(link) https://github.com/fezcode
256+
(demo_link) https://addons.mozilla.org/en-US/firefox/user/17269481/
257+
(repo_link) https://github.com/fezcode
249258
(pinned) false
250259
(isActive) false
251260
(technologies)

src/components/CommandPalette.jsx

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,23 @@ const getCategoryColorClass = (type) => {
3434
return categoryColorMap[type] || 'bg-gray-500'; // Default gray for unmapped types
3535
};
3636

37+
const GenerativeArtCommand = () => {
38+
const [seed, setSeed] = useState(() => Math.random().toString(36).substring(7));
39+
40+
const handleRegenerate = () => {
41+
setSeed(Math.random().toString(36).substring(7));
42+
};
43+
44+
return (
45+
<GenerativeArt
46+
seed={seed}
47+
showDownload={true}
48+
downloadResolution={3840} // 4K Resolution
49+
onRegenerate={handleRegenerate}
50+
/>
51+
);
52+
};
53+
3754
const CommandPalette = ({
3855
isOpen,
3956
setIsOpen,
@@ -449,10 +466,7 @@ const CommandPalette = ({
449466
case 'generateArt':
450467
openGenericModal(
451468
'Generative Art',
452-
<GenerativeArt
453-
seed={Math.random().toString(36).substring(7)}
454-
showDownload={true}
455-
/>,
469+
<GenerativeArtCommand />,
456470
);
457471
break;
458472
case 'leetTransformer':

src/components/GenerativeArt.jsx

Lines changed: 24 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
import React, { useMemo, useRef } from 'react';
2-
import { DownloadSimpleIcon } from '@phosphor-icons/react';
2+
import { DownloadSimpleIcon, ArrowsClockwiseIcon } from '@phosphor-icons/react';
33

44
const GenerativeArt = ({
55
seed = 'fezcodex',
66
className,
77
showDownload = false,
8+
downloadResolution = 1024,
9+
onRegenerate,
810
}) => {
911
const svgRef = useRef(null);
1012
// Sanitize seed for use in SVG IDs
@@ -125,7 +127,7 @@ const GenerativeArt = ({
125127
const img = new Image();
126128

127129
// Higher resolution for download
128-
const size = 1024;
130+
const size = downloadResolution;
129131
canvas.width = size;
130132
canvas.height = size;
131133

@@ -271,15 +273,26 @@ const GenerativeArt = ({
271273
}}
272274
/>
273275

274-
{showDownload && (
275-
<button
276-
onClick={handleDownload}
277-
className="absolute bottom-4 right-4 p-3 bg-white/10 hover:bg-emerald-500 text-white hover:text-black transition-all border border-white/10 rounded-sm group/dl backdrop-blur-md"
278-
title="Download PNG"
279-
>
280-
<DownloadSimpleIcon size={20} weight="bold" />
281-
</button>
282-
)}
276+
<div className="absolute bottom-4 right-4 flex gap-2">
277+
{onRegenerate && (
278+
<button
279+
onClick={onRegenerate}
280+
className="p-3 bg-white/10 hover:bg-emerald-500 text-white hover:text-black transition-all border border-white/10 rounded-sm group/regen backdrop-blur-md"
281+
title="Regenerate Art"
282+
>
283+
<ArrowsClockwiseIcon size={20} weight="bold" className="group-hover/regen:rotate-180 transition-transform duration-500" />
284+
</button>
285+
)}
286+
{showDownload && (
287+
<button
288+
onClick={handleDownload}
289+
className="p-3 bg-white/10 hover:bg-emerald-500 text-white hover:text-black transition-all border border-white/10 rounded-sm group/dl backdrop-blur-md"
290+
title="Download PNG (4K)"
291+
>
292+
<DownloadSimpleIcon size={20} weight="bold" />
293+
</button>
294+
)}
295+
</div>
283296
</div>
284297
);
285298
};

0 commit comments

Comments
 (0)