# SciPaperLoader: Flask Application Initial Structure ## Project Overview **SciPaperLoader** is a Flask-based web application for managing scientific papers. It provides a web interface (with Jinja2 templates) enhanced by **Alpine.js** for interactive UI components and **HTMX** for partial page updates without full reloads. The application is composed of two main parts: a Flask web app (serving pages for uploading data, configuring schedules, and viewing logs) and a background **scraper daemon** that runs independently to perform long-running tasks (like fetching paper details on a schedule). The project is organized following Flask best practices (using blueprints, separating static files and templates) and is set up for easy development and testing (with configuration files and a pytest test fixture). ## Quick Start Run the application: make run And open it in the browser at [http://localhost:5000/](http://localhost:5000/) ## Prerequisites Python >=3.8 ## Development environment - `make venv`: creates a virtualenv with dependencies and this application installed in [development mode](http://setuptools.readthedocs.io/en/latest/setuptools.html#development-mode) - `make run`: runs a development server in debug mode (changes in source code are reloaded automatically) - `make format`: reformats code - `make lint`: runs flake8 - `make mypy`: runs type checks by mypy - `make test`: runs tests (see also: [Testing Flask Applications](https://flask.palletsprojects.com/en/3.0.x/testing/)) - `make dist`: creates a wheel distribution (will run tests first) - `make clean`: removes virtualenv and build artifacts - add application dependencies in `pyproject.toml` under `project.dependencies`; add development dependencies under `project.optional-dependencies.*`; run `make clean && make venv` to reinstall the environment ## Configuration Default configuration is loaded from `scipaperloader.defaults` and can be overriden by environment variables with a `FLASK_` prefix. See [Configuring from Environment Variables](https://flask.palletsprojects.com/en/3.0.x/config/#configuring-from-environment-variables). Consider using [dotenv](https://flask.palletsprojects.com/en/3.0.x/cli/#environment-variables-from-dotenv). ## Deployment See [Deploying to Production](https://flask.palletsprojects.com/en/3.0.x/deploying/). You may use the distribution (`make dist`) to publish it to a package index, deliver to your server, or copy in your `Dockerfile`, and insall it with `pip`. You must set a [SECRET_KEY](https://flask.palletsprojects.com/en/3.0.x/tutorial/deploy/#configure-the-secret-key) in production to a secret and stable value.