Skip to content
This repository was archived by the owner on Feb 27, 2026. It is now read-only.

Commit 2990e6f

Browse files
v3.0-beta (#41)
2 parents 9984a21 + 65c9b75 commit 2990e6f

325 files changed

Lines changed: 38163 additions & 5246 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.dockerignore

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,17 @@ jspm_packages/
6060
Dockerfile*
6161
docker-compose*
6262

63+
# Storage directories (created at runtime)
64+
uploads/
65+
temp-chunks/
66+
apps/server/uploads/
67+
apps/server/temp-chunks/
68+
69+
# Static files
70+
apps/server/prisma/*.db
71+
apps/server/.env
72+
apps/web/.env
73+
6374
# OS generated files
6475
.DS_Store
6576
.DS_Store?

Dockerfile

Lines changed: 32 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
1-
FROM node:18-alpine AS base
1+
FROM node:20-alpine AS base
22

3-
# Install system dependencies
3+
# Install system dependencies (removed netcat-openbsd since we no longer need to wait for PostgreSQL)
44
RUN apk add --no-cache \
5-
netcat-openbsd \
65
gcompat \
76
supervisor \
87
curl
@@ -71,13 +70,17 @@ FROM base AS runner
7170
# Set production environment
7271
ENV NODE_ENV=production
7372
ENV NEXT_TELEMETRY_DISABLED=1
73+
ENV API_BASE_URL=http://127.0.0.1:3333
7474

7575
# Create application user
7676
RUN addgroup --system --gid 1001 nodejs
7777
RUN adduser --system --uid 1001 palmr
7878

7979
# Create application directories and set permissions
80-
RUN mkdir -p /app/server /app/web /home/palmr/.npm /home/palmr/.cache
80+
# Include storage directories for filesystem mode and SQLite database directory
81+
RUN mkdir -p /app/server /app/web /home/palmr/.npm /home/palmr/.cache \
82+
/app/server/uploads /app/server/temp-chunks /app/server/uploads/logo \
83+
/app/server/prisma
8184
RUN chown -R palmr:nodejs /app /home/palmr
8285

8386
# === Copy Server Files ===
@@ -89,6 +92,15 @@ COPY --from=server-builder --chown=palmr:nodejs /app/server/node_modules ./node_
8992
COPY --from=server-builder --chown=palmr:nodejs /app/server/prisma ./prisma
9093
COPY --from=server-builder --chown=palmr:nodejs /app/server/package.json ./
9194

95+
# Copy password reset script and make it executable
96+
COPY --from=server-builder --chown=palmr:nodejs /app/server/reset-password.sh ./
97+
COPY --from=server-builder --chown=palmr:nodejs /app/server/src/scripts/ ./src/scripts/
98+
COPY --from=server-builder --chown=palmr:nodejs /app/server/PASSWORD_RESET_GUIDE.md ./
99+
RUN chmod +x ./reset-password.sh
100+
101+
# Ensure storage directories have correct permissions
102+
RUN chown -R palmr:nodejs /app/server/uploads /app/server/temp-chunks /app/server/prisma
103+
92104
# === Copy Web Files ===
93105
WORKDIR /app/web
94106

@@ -108,7 +120,7 @@ COPY infra/server-start.sh /app/server-start.sh
108120
RUN chmod +x /app/server-start.sh
109121
RUN chown palmr:nodejs /app/server-start.sh
110122

111-
# Copy supervisor configuration
123+
# Copy supervisor configuration (simplified without PostgreSQL dependency)
112124
COPY <<EOF /etc/supervisor/conf.d/supervisord.conf
113125
[supervisord]
114126
nodaemon=true
@@ -124,31 +136,43 @@ autostart=true
124136
autorestart=true
125137
stderr_logfile=/var/log/supervisor/server.err.log
126138
stdout_logfile=/var/log/supervisor/server.out.log
127-
environment=PORT=3333,HOME="/home/palmr"
139+
environment=PORT=3333,HOME="/home/palmr",ENABLE_S3="false",ENCRYPTION_KEY="default-key-change-in-production"
140+
priority=100
128141

129142
[program:web]
130-
command=node server.js
143+
command=/bin/sh -c 'echo "Waiting for API to be ready..."; while ! curl -f http://127.0.0.1:3333/health >/dev/null 2>&1; do echo "API not ready, waiting..."; sleep 2; done; echo "API is ready! Starting frontend..."; exec node server.js'
131144
directory=/app/web
132145
user=palmr
133146
autostart=true
134147
autorestart=true
135148
stderr_logfile=/var/log/supervisor/web.err.log
136149
stdout_logfile=/var/log/supervisor/web.out.log
137-
environment=PORT=5487,HOSTNAME="0.0.0.0",HOME="/home/palmr"
150+
environment=PORT=5487,HOSTNAME="0.0.0.0",HOME="/home/palmr",API_BASE_URL="http://127.0.0.1:3333"
151+
priority=200
152+
startsecs=10
138153
EOF
139154

140155
# Create main startup script
141156
COPY <<EOF /app/start.sh
142157
#!/bin/sh
143158

144159
echo "Starting Palmr Application..."
160+
echo "Storage Mode: \${ENABLE_S3:-false}"
161+
echo "Database: SQLite"
162+
163+
# Ensure storage directories exist with correct permissions
164+
mkdir -p /app/server/uploads /app/server/temp-chunks /app/server/uploads/logo /app/server/prisma
165+
chown -R palmr:nodejs /app/server/uploads /app/server/temp-chunks /app/server/prisma
145166

146167
# Start supervisor
147168
exec /usr/bin/supervisord -c /etc/supervisor/conf.d/supervisord.conf
148169
EOF
149170

150171
RUN chmod +x /app/start.sh
151172

173+
# Create volume mount points for persistent storage (filesystem mode and SQLite database)
174+
VOLUME ["/app/server/uploads", "/app/server/temp-chunks", "/app/server/prisma"]
175+
152176
# Expose ports
153177
EXPOSE 3333 5487
154178

LICENSE

Lines changed: 26 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,37 @@
1-
BSD 2-Clause License
1+
Kyantech-Permissive License (Based on BSD 2-Clause)
22

3-
Copyright (c) 2025, Daniel Luiz Alves (danielalves96)
3+
Copyright (c) 2025, Daniel Luiz Alves (danielalves96) - Kyantech Solutions
44
All rights reserved.
55

66
Redistribution and use in source and binary forms, with or without
7-
modification, are permitted provided that the following conditions are met:
7+
modification, are permitted for any purpose — private, commercial,
8+
educational, governmental — **fully free and unrestricted**, provided
9+
that the following conditions are met:
810

9-
1. Redistributions of source code must retain the above copyright notice, this
10-
list of conditions and the following disclaimer.
11+
1. Redistributions of source code must retain the above copyright
12+
notice, this list of conditions, and the following disclaimer.
1113

12-
2. Redistributions in binary form must reproduce the above copyright notice,
13-
this list of conditions and the following disclaimer in the documentation
14-
and/or other materials provided with the distribution.
14+
2. Redistributions in binary form must reproduce the above copyright
15+
notice, this list of conditions, and the following disclaimer in the
16+
documentation and/or other materials provided with the distribution.
17+
18+
3. **If this software (or derivative works) is used in any public-facing
19+
interface** — such as websites, apps, dashboards, admin panels, or
20+
similar — a **simple credit** must appear in the footer or similar
21+
location. The credit text should read:
22+
23+
> “Powered by Kyantech Solutions · https://kyantech.com.br”
24+
25+
This credit must be reasonably visible but **must not interfere** with
26+
your UI, branding, or user experience. You may style it to match your
27+
own design and choose its size, placement, or color.
28+
29+
---
1530

1631
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
17-
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18-
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19-
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
32+
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
33+
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
34+
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
2035
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
2136
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
2237
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER

README.md

Lines changed: 80 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# 🌴 Palmr. - Open-Source File Transfer
22

33
<p align="center">
4-
<img src="https://res.cloudinary.com/technical-intelligence/image/upload/v1745548261/Palmr./banner_roxtph.png" alt="Palmr Logo" style="width: 100%;">
4+
<img src="https://res.cloudinary.com/technical-intelligence/image/upload/v1749825361/Group_47_1_bcx8gw.png" alt="Palmr Banner" style="width: 100%;"/>
55
</p>
66

77
**Palmr.** is a **flexible** and **open-source** alternative to file transfer services like **WeTransfer**, **SendGB**, **Send Anywhere**, and **Files.fm**.
@@ -14,6 +14,8 @@
1414
- **Self-hosted** – Deploy on your own server or VPS.
1515
- **Full control** – No third-party dependencies, ensuring privacy and security.
1616
- **No artificial limits** – Share files without hidden restrictions or fees.
17+
- **Simple deployment** – SQLite database and filesystem storage for easy setup.
18+
- **Scalable storage** – Optional S3-compatible object storage for enterprise needs.
1719

1820
## 🚀 Technologies Used
1921

@@ -26,8 +28,8 @@
2628

2729
### **Backend & API**
2830
- **Fastify (Node.js)** – High-performance API framework with built-in schema validation.
29-
- **PostgreSQL**Reliable, secure, and scalable database solution.
30-
- **MinIO (Object Storage)**AWS S3-compatible storage for high availability.
31+
- **SQLite**Lightweight, reliable database with zero-configuration setup.
32+
- **Filesystem Storage**Direct file storage with optional S3-compatible object storage.
3133

3234
### **Frontend**
3335
- **NextJS 15 + TypeScript + Shadcn/ui** – Modern and fast web interface.
@@ -36,9 +38,80 @@
3638
## 🛠️ How It Works
3739

3840
1. **Web Interface** → Built with Next, React and TypeScript for a seamless user experience.
39-
2. **Backend API** → Fastify handles requests and interacts with storage.
40-
3. **Database** → PostgreSQL stores metadata and transactional data.
41-
4. **Storage** → MinIO ensures reliable file storage and retrieval.
41+
2. **Backend API** → Fastify handles requests and manages file operations.
42+
3. **Database** → SQLite stores metadata and transactional data with zero configuration.
43+
4. **Storage** → Filesystem storage ensures reliable file storage with optional S3-compatible object storage for scalability.
44+
45+
## 📸 Screenshots
46+
47+
<table>
48+
<tr>
49+
<td align="center">
50+
<img src="https://res.cloudinary.com/technical-intelligence/image/upload/v1749824929/Login_veq6e7.png" alt="Login Page" style="width: 100%; border-radius: 8px;" />
51+
<br /><strong>Login Page</strong>
52+
</td>
53+
<td align="center">
54+
<img src="https://res.cloudinary.com/technical-intelligence/image/upload/v1749824929/Home_lzvfzu.png" alt="Home Page" style="width: 100%; border-radius: 8px;" />
55+
<br /><strong>Home Page</strong>
56+
</td>
57+
</tr>
58+
<tr>
59+
<td align="center">
60+
<img src="https://res.cloudinary.com/technical-intelligence/image/upload/v1749824928/Dashboard_uycmxb.png" alt="Dashboard" style="width: 100%; border-radius: 8px;" />
61+
<br /><strong>Dashboard</strong>
62+
</td>
63+
<td align="center">
64+
<img src="https://res.cloudinary.com/technical-intelligence/image/upload/v1749824929/Profile_wvnlzw.png" alt="Profile Page" style="width: 100%; border-radius: 8px;" />
65+
<br /><strong>Profile Page</strong>
66+
</td>
67+
</tr>
68+
<tr>
69+
<td align="center">
70+
<img src="https://res.cloudinary.com/technical-intelligence/image/upload/v1749824928/Files_List_ztwr1e.png" alt="Files List View" style="width: 100%; border-radius: 8px;" />
71+
<br /><strong>Files List View</strong>
72+
</td>
73+
<td align="center">
74+
<img src="https://res.cloudinary.com/technical-intelligence/image/upload/v1749824928/Files_Cards_pwsh5e.png" alt="Files Card View" style="width: 100%; border-radius: 8px;" />
75+
<br /><strong>Files Card View</strong>
76+
</td>
77+
</tr>
78+
<tr>
79+
<td align="center">
80+
<img src="https://res.cloudinary.com/technical-intelligence/image/upload/v1749824927/Shares_cgplgw.png" alt="Shares Management" style="width: 100%; border-radius: 8px;" />
81+
<br /><strong>Shares Management</strong>
82+
</td>
83+
<td align="center">
84+
<img src="https://res.cloudinary.com/technical-intelligence/image/upload/v1749824928/Reive_Files_uhkeyc.png" alt="Receive Files" style="width: 100%; border-radius: 8px;" />
85+
<br /><strong>Receive Files</strong>
86+
</td>
87+
</tr>
88+
<tr>
89+
<td align="center">
90+
<img src="https://res.cloudinary.com/technical-intelligence/image/upload/v1749824927/Default_Reverse_xedmhw.png" alt="Reverse Share" style="width: 100%; border-radius: 8px;" />
91+
<br /><strong>Reverse Share</strong>
92+
</td>
93+
<td align="center">
94+
<img src="https://res.cloudinary.com/technical-intelligence/image/upload/v1749824928/Settings_oampxr.png" alt="Settings Panel" style="width: 100%; border-radius: 8px;" />
95+
<br /><strong>Settings Panel</strong>
96+
</td>
97+
</tr>
98+
<tr>
99+
<td align="center">
100+
<img src="https://res.cloudinary.com/technical-intelligence/image/upload/v1749824928/User_Management_xjbfhn.png" alt="User Management" style="width: 100%; border-radius: 8px;" />
101+
<br /><strong>User Management</strong>
102+
</td>
103+
<td align="center">
104+
<img src="https://res.cloudinary.com/technical-intelligence/image/upload/v1749824928/Forgot_Password_jcz9ad.png" alt="Forgot Password" style="width: 100%; border-radius: 8px;" />
105+
<br /><strong>Forgot Password</strong>
106+
</td>
107+
</tr>
108+
<tr>
109+
<td align="center">
110+
<img src="https://res.cloudinary.com/technical-intelligence/image/upload/v1749824928/WeTransfer_Reverse_u0g7eb.png" alt="Forgot Password" style="width: 100%; border-radius: 8px;" />
111+
<br /><strong>Reverse Share (WeTransfer Style)</strong>
112+
</td>
113+
</tr>
114+
</table>
42115

43116

44117
## 👨‍💻 Core Maintainers
@@ -66,3 +139,4 @@
66139
## 🛠️ Contributing
67140

68141
For contribution guidelines, please refer to the [CONTRIBUTING.md](CONTRIBUTING.md) file.
142+

apps/docs/content/docs/1.1.7-beta/meta.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"title": "v1.1.7-beta",
33
"description": "(Deprecated)",
44
"root": true,
5-
"icon": "Building2",
5+
"icon": "Trash2",
66
"pages": [
77
"---Introduction---",
88
"index",
@@ -25,4 +25,4 @@
2525
"gh-star",
2626
"gh-sponsor"
2727
]
28-
}
28+
}

apps/docs/content/docs/2.0.0-beta/meta.json

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
{
22
"title": "v2.0.0-beta",
3-
"description": "v2.0.0-beta Documentation",
3+
"description": "(Deprecated)",
44
"root": true,
5-
"icon": "Building2",
5+
"icon": "Trash2",
66
"pages": [
77
"---Introduction---",
88
"index",
@@ -11,6 +11,7 @@
1111
"installation",
1212
"manual-installation",
1313
"api",
14+
"s3-providers",
1415
"---How to use Palmr.---",
1516
"manage-users",
1617
"uploading-files",

0 commit comments

Comments
 (0)