Skip to content

Commit e6ddc18

Browse files
committed
add(project): ArchWebBlocker
1 parent 4f3ba52 commit e6ddc18

File tree

4 files changed

+74
-0
lines changed

4 files changed

+74
-0
lines changed

_projects/8_project.md

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
---
2+
layout: page
3+
title: ArchBlocker
4+
description: A powerful website blocker with a retro terminal interface for managing digital distractions.
5+
img: assets/img/ArchBlocker.png
6+
importance: 1
7+
category: productivity
8+
---
9+
10+
## `ArchWebBlocker` - Your Digital Well-being Guardian
11+
12+
> ArchWebBlocker combines the power of system-level website blocking with a nostalgic terminal interface, helping you stay focused when it matters most.
13+
14+
### `Feature Highlights`
15+
16+
Built with `Python` for the backend and `React` for the frontend, ArchWebBlocker offers a unique approach to managing digital distractions. The application uses system-level blocking through the hosts file, ensuring robust website blocking that can't be easily circumvented.
17+
18+
### `Interface Views`
19+
20+
#### Terminal Interface
21+
22+
<details>
23+
<summary>View the Terminal Interface</summary>
24+
<div class="row justify-content-center">
25+
<div class="col-md-8">
26+
{% include figure.liquid path="assets/img/terminal.jpg" title="Terminal Interface" class="img-fluid rounded z-depth-1" %}
27+
</div>
28+
</div>
29+
</details>
30+
31+
### `Technical Deep Dive`
32+
33+
#### Backend Architecture
34+
- Flask-based API server
35+
- System-level website blocking via hosts file
36+
- Rotating log system for debugging
37+
- Secure file handling with immutability protection
38+
- Systemd service integration for automatic startup
39+
40+
#### Frontend Features
41+
- React + Vite for modern development experience
42+
- Terminal-style interface using Lucide React
43+
- Real-time API communication
44+
- Tailwind CSS for responsive design
45+
- Command-line inspired interaction
46+
47+
48+
49+
50+
- **[ArchWebBlocker GitHub Repository](https://github.com/andebugulin/archwebblocker)**
51+
52+
### `Contributors`
53+
54+
<div id="contributors-list" style="display: flex; flex-wrap: wrap; justify-content: space-around; padding: 20px;">Loading contributors...</div>
55+
56+
<script>
57+
async function fetchContributors() {
58+
const url = 'https://api.github.com/repos/andebugulin/archwebblocker/contributors';
59+
const response = await fetch(url);
60+
const contributors = await response.json();
61+
62+
const contributorsHtml = contributors.map(contributor =>
63+
`<div class="contributor" style="margin: 10px; text-align: center;">
64+
<img src="${contributor.avatar_url}" alt="${contributor.login}" style="width: 100px; height: 100px; border-radius: 50%; display: block; margin: auto;">
65+
<p><a href="${contributor.html_url}" target="_blank">${contributor.login}</a></p>
66+
</div>`
67+
).join('');
68+
69+
document.getElementById('contributors-list').innerHTML = contributorsHtml;
70+
}
71+
72+
fetchContributors();
73+
</script>

assets/img/ArchBlocker.png

513 KB
Loading

assets/img/generated-pixel-art.png

Lines changed: 1 addition & 0 deletions
Loading

assets/img/terminal.jpg

109 KB
Loading

0 commit comments

Comments
 (0)