BinCode/README.md

87 lines
2.6 KiB
Markdown
Raw Normal View History

2025-01-17 21:01:31 +00:00
# [BinCode](jsbin.asadk.dev) - A Complete Self-Hostable JSFiddle Alternative
2025-01-17 20:05:21 +00:00
## Overview
BinCode is a minimalist platform for managing and sharing code snippets, built with Vue.js and SQLite. It runs entirely on your own infrastructure, giving you full control over your data and workflow.
2025-01-17 20:05:21 +00:00
## Key Features
- **Self-Contained:** No external dependencies required.
- **Modern Stack:** Vue.js frontend and SQLite database.
- **JWT Authentication:** Secure, simple user management.
- **Instant Sharing:** Generate unique URLs for snippets.
- **Minimal Setup:** Create users manually to start sharing.
- **Performance-Focused:** Lightweight and fast.
2025-01-17 20:05:21 +00:00
## Architecture
- **Frontend:** Vue.js
- **Database:** SQLite
- **Authentication:** JWT
- **Deployment:** Single self-contained server.
2025-01-17 20:05:21 +00:00
There is no signups its by design just create users manullay and they can start commits snippets to share
## Why BinCode?
BinCode is a lightweight, self-hostable tool for teams and individuals needing a simple, reliable solution for code sharing without relying on external services.
2025-01-17 20:05:21 +00:00
## Design Choices
- **No Signups:** Admins manually create user accounts for simplicity and security.
- **Self-Hosted:** Ensures privacy and control over your data.
2025-01-17 20:05:21 +00:00
## Contributing
Contributions are welcome, as long as the tool remains lightweight and self-contained.
2025-01-17 20:05:21 +00:00
## Getting Started
### 1. Clone and Install Dependencies
```bash
git clone https://git.sheetjs.com/asadbek064/BinCode.git
cd BinCode
pnpm install
```
### 2. Set Up Environment Variables
Create a .env file in the project root and define the following variables:
```env
NODE_ENV=development
PORT=3000
JWT_SECRET=your-secure-secret-here
JWT_EXPIRES_IN=7d
```
2025-01-17 20:36:28 +00:00
### 3. Adding user
2025-01-17 20:05:21 +00:00
```bash
node addUser.js "user@email.com" "password"
```
2025-01-17 20:36:28 +00:00
### 4. Development server
Before starting the development server, ensure you change the Vue.js library import from `_prod` to `_dev` in [`index.html`](https://git.sheetjs.com/asadbek064/BinCode/src/commit/3e35da0118e8e6b44863b3fee12c1e2dff96b02e/public/index.html#L129).
2025-01-17 20:05:21 +00:00
```bash
pnpm dev
```
### 5. Production
2025-01-17 20:36:28 +00:00
Copy .env.example to .env and generate unique secret and cahnge NODE_ENV=production
1. Copy .env.example to .env:
```bash
cp .env.example .env
```
2. Generate a unique secret and set NODE_ENV=production in the .env file.
3. Start the production server
2025-01-17 20:05:21 +00:00
```
pnpm start
2025-01-17 20:36:28 +00:00
````
### 5. Production
- For development, using the `_dev` version of Vue.js (vue.global.js) is recommended as it includes debugging tools and warnings.
- For production, switch to the `_prod` version (vue.global.prod.js) to optimize performance.