ikshudhanvapl /
iam_automation
An automated IAM (Identity & Access Management) system built with Python and SQLite to manage the Joiner-Mover-Leaver lifecycle via Linux Cron.
52/100 healthLoading repository data…
sumedhpb / repository
An automated system that computes the Hindu Panchanga for each day and uses a local LLM to generate a rich summary, including stories, legends, and spiritual guidance, delivered to Slack.
A transparent discovery signal based on current public GitHub metadata.
This score does not audit code, security, maintainers, documentation quality, or suitability. Verify the repository and its current documentation before adoption.
An automated system that computes the Hindu Panchanga for each day and uses a local LLM to generate a rich summary — including stories, legends, and spiritual guidance — delivered to Slack.
┌─────────────────────────────────────────────────┐
│ Docker Container (cron @ midnight US Central) │
│ │
│ main.py │
│ ├── panchanga.py → compute 5 limbs │
│ │ → scrape festivals │
│ │ (drikpanchang.com) │
│ └── summary_generator.py → LangChain + Ollama│
│ │ │
│ ├── Slack webhook → your channel │
│ └── output/YYYY-MM-DD.md (backup) │
└────────────────────┬────────────────────────────┘
│ HTTP
┌──────▼──────┐
│ Ollama │
│ llama3.3:70b│
└─────────────┘
ollama pull llama3.3:70b
Copy the example environment file and fill in your values:
cp .env.example .env
Edit .env with your actual configuration:
# ── Ollama ──────────────────────────────────────────
OLLAMA_HOST=http://your-ollama-host:11434
OLLAMA_MODEL=llama3.3:70b
# ── Slack ───────────────────────────────────────────
SLACK_WEBHOOK_URL=https://hooks.slack.com/services/T.../B.../xxx
| Variable | Default | Description |
|---|---|---|
OLLAMA_HOST | http://localhost:11434 | Ollama server URL |
OLLAMA_MODEL | llama3.3:70b | Model for summary generation |
SLACK_WEBHOOK_URL | (required) | Slack incoming webhook URL |
TZ | America/Chicago | Container timezone (set in docker-compose.yml) |
# Make sure .env exists with your configuration (see above)
# Build & start (cron runs at midnight US Central daily)
docker compose up -d --build
# Check logs
docker logs -f panchanga-daily
# Test immediately without waiting for midnight
docker exec panchanga-daily python /app/main.py --force
The container uses multiple layers to ensure the daily summary is never missed:
A single cron entry runs every 4 hours inside the container:
0 */4 * * * /app/run_daily.sh # Fires at 0:00, 4:00, 8:00, 12:00, 16:00, 20:00
main.py ensures only one Slack message is sent per day (checks if output/YYYY-MM-DD.md was written today)America/Chicago (US Central) via TZ in docker-compose.ymlrun_daily.sh is a wrapper that sources Docker env vars (which cron doesn't inherit) and runs main.pyThe entrypoint.sh script runs on every container start and checks if today's summary has been generated. If not, it runs main.py immediately — so even a container restart or host reboot at midnight won't cause a missed day.
main.py retries up to 3 times with exponential backoff (30s → 60s → 120s)docker exec panchanga-daily python /app/main.py --date 2026-05-07
docker exec panchanga-daily python /app/main.py --date 2026-05-08
Logs are written to ./logs/panchanga.log (mounted as a Docker volume) and also forwarded to docker logs:
# View via docker logs
docker logs -f panchanga-daily
# Or read the persistent log file on the host
cat logs/panchanga.log
To test end-to-end immediately without waiting for midnight:
# Run inside the container
docker exec panchanga-daily python /app/main.py --force
# Or for a specific date (past or future)
docker exec panchanga-daily python /app/main.py --date 2026-05-10
This runs the exact same pipeline that cron would run — computes panchanga, generates the LLM summary, sends it to Slack, and saves the backup file.
The app prevents duplicate Slack messages using smart detection:
--date) check if today's output file exists and was written today. If so, the run is skipped.--date runs always execute — they're considered intentional.--date for a future date is safe. For example, running --date 2026-05-10 on May 9 creates the output file with a May 9 timestamp. When cron fires on May 10, it sees the file was written yesterday and re-runs, delivering a fresh summary.--force to bypass all duplicate checks.python main.py [OPTIONS]
Options:
--date YYYY-MM-DD Generate summary for a specific date (default: today)
--force Run even if today's output file already exists
panchanga_summary_app/
├── main.py # Orchestrator — CLI, retry, Slack delivery
├── panchanga.py # Panchanga computation + drikpanchang.com scraping
├── summary_generator.py # LangChain + Ollama summary chain
├── requirements.txt # Python dependencies
├── Dockerfile # Container with cron
├── docker-compose.yml # Production deployment config
├── entrypoint.sh # Startup catch-up + env export + cron launcher
├── run_daily.sh # Cron wrapper (sources env, runs main.py)
├── .env.example # Template — copy to .env and fill in your values
├── output/ # Backup summaries (also sent to Slack)
└── logs/ # Persistent logs (mounted volume)
Selected from shared topics, language and repository description—not editorial ratings.
ikshudhanvapl /
An automated IAM (Identity & Access Management) system built with Python and SQLite to manage the Joiner-Mover-Leaver lifecycle via Linux Cron.
52/100 healthThis project automated the analysis of security logs and the generation of detailed reports to improve the efficiency and effectiveness of incident detection and response. The system utilizes Python, Bash scripting, and regular expressions to parse logs and Cron for scheduling tasks.
27/100 health