Metadata-Version: 2.1
Name: monitor-app
Version: 0.1.7
Summary: A simple Flask-based database viewer and manager
Home-page: https://github.com/hardwork9047/monitor-app
License: MIT
Author: hardwork9047
Author-email: tomatosimple1104@gmail.com
Requires-Python: >=3.10,<4.0
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Requires-Dist: click (>=8.1.3,<9.0.0)
Requires-Dist: flask (>=3.1.0,<4.0.0)
Requires-Dist: flask-cors (>=4.0.0,<5.0.0)
Requires-Dist: flask-sqlalchemy (>=3.1.1,<4.0.0)
Requires-Dist: pandas (>=2.2.3,<3.0.0)
Requires-Dist: pg8000 (>=1.30.5,<2.0.0)
Requires-Dist: pymysql (>=1.1.0,<2.0.0)
Requires-Dist: toml (>=0.10.2,<0.11.0)
Project-URL: Documentation, https://github.com/hardwork9047/monitor-app
Project-URL: Repository, https://github.com/hardwork9047/monitor-app
Description-Content-Type: text/markdown

# Monitor App 🚀

Monitor App は、CSV データをデータベースに取り込み、Webブラウザで閲覧できるシンプルなアプリケーションです。  
SQLite / MySQL / PostgreSQL に対応し、`startproject` コマンドでプロジェクトを作成できます。  
このプロジェクトはFlask, Djangoに非常にインスパイアされており、特にFlaskをベースとしたライブラリです。  
Python初学者の多い製造業にて、より短期間でWebアプリを作成することを目的に開発しています。

## 📌 特徴
- `monitor-app startproject` で新しいプロジェクトを作成
- CSV データをSQLiteに簡単に変換
- Web UI でデータを表示
- `Flask-SQLAlchemy` を使用し、SQLite / MySQL / PostgreSQL に対応
- Bootstrap を使用したスタイリッシュな UI
- `config.py` でカスタマイズ可能

---

## 🚀 インストール方法
`pip install` で簡単にインストールできます。

```sh
pip install monitor-app
```

---

## 🔧 使い方

### **1️⃣ 新しいプロジェクトを作成**
```sh
monitor-app startproject <プロジェクト名>
```
📌 **例: my_projectという名称でテンプレートを作成**
```sh
monitor-app startproject my_project
```
➡ `my_project` フォルダにMonitor-appアプリのテンプレートが作成されます。


### **2️⃣ CSV をデータベースに登録**
```sh
cd my_project
python <プロジェクト名>/app.py import-csv
```
➡ `csv/` フォルダのCSVをSQLiteデータベースに変換します。

### **3️⃣ Web アプリを起動**
```sh
python <プロジェクト名>/app.py runserver
```
➡ `http://127.0.0.1:9990` にアクセス！

### **📌 `runserver` のオプション**
| オプション | 説明 |
|------------|--------------------------------|
| `--csv`   | CSV を登録してから起動する  |
| `--debug` | デバッグモードで起動する    |
| `--port <PORT>` | ポートを指定する（デフォルト: 9990） |

📌 **例: CSV を登録後に起動**
```sh
python <プロジェクト名>/app.py runserver --csv
```

📌 **例: デバッグモードでポート `8000` で起動**
```sh
python <プロジェクト名>/app.py runserver --debug --port 8000
```

---

## 📂 フォルダ構成
```sh
my_project/
│── monitor_app/
│   ├── app.py           # Flask アプリのメインファイル
│   ├── cli.py           # テンプレート作成用のコマンドファイル
│   ├── csv_to_db.py     # CSV をデータベースにインポートするスクリプト
│   ├── config/
│   │    ├── config.py   # 設定ファイル
│   ├── templates/       # HTML テンプレート
│   ├── static/          # CSS / JavaScript / 画像
│   ├── csv/             # CSV データを保存するフォルダ
│   ├── instances/       # SQLiteデータベースの保存先
│── pyproject.toml       # Poetry の設定ファイル
│── README.md            # このファイル
```

---

## 🔧 `config.py` の設定
プロジェクトの設定は `config/config.py` で変更できます。

📌 **データベースの設定**
```python
# SQLite（デフォルト）
SQLALCHEMY_DATABASE_URI = "sqlite:///instances/database.db"

# MySQL を使用する場合
# SQLALCHEMY_DATABASE_URI = "mysql+pymysql://user:password@localhost/dbname"

# PostgreSQL を使用する場合
# SQLALCHEMY_DATABASE_URI = "postgresql://user:password@localhost/dbname"
```

📌 **カスタムテーブルと JOIN の設定**
```python
ALLOWED_TABLES = {
    "users": {"columns": ["id", "name", "email"], "primary_key": "id"},
    "products": {"columns": ["id", "name", "price"], "primary_key": "id"},
    "orders": {
        "columns": ["id", "user_id", "product_id", "amount"],
        "primary_key": "id",
        "foreign_keys": {"user_id": "users.id", "product_id": "products.id"},
        "join": '''
            SELECT orders.id, users.name AS user_name, products.name AS product_name, orders.amount
            FROM orders
            JOIN users ON orders.user_id = users.id
            JOIN products ON orders.product_id = products.id
        ''',
    },
}
```

---

## 📌 `monitor-app` の CLI コマンド一覧
| コマンド | 説明 |
|------------|----------------------------------|
| `monitor-app startproject <name>` | 新しいプロジェクトを作成 |
| `monitor-app import-csv` | CSV をデータベースに登録 |
| `python <プロジェクト名>/app.py` | Web アプリを起動 |
| `python <プロジェクト名>/app.py --csv` | CSV 登録後に起動 |
| `python <プロジェクト名>/app.py --port <PORT>` | 指定ポートで起動 |

---

## 📌 必要な環境
- Python 3.10+
- `Flask`, `Flask-SQLAlchemy`, `pandas`, `click`
- `Poetry` (開発環境)

---

## 📌 ライセンス
MIT ライセンスのもとで提供されています。

---

## 📌 貢献
Pull Request 大歓迎！🚀  
バグ報告や改善提案もお待ちしています！

🔗 **GitHub:** [Monitor App Repository](https://github.com/hardwork9047/monitor-app)

---

✅ **これで `monitor-app` を簡単にインストール＆利用できるようになります！** 🚀

