Skip to content

InNoHassle Accounts service for accessing websites and Telegram bots using your Innopolils account.

License

Notifications You must be signed in to change notification settings

one-zero-eight/accounts

Repository files navigation

Accounts API | InNoHassle ecosystem

https://api.innohassle.ru/accounts

GitHub Actions pre-commit

Lines of Code Bugs Vulnerabilities

Table of contents

Did you know that GitHub supports table of contents by default 🤔

About

This is the API for accounts service in InNoHassle ecosystem.

Features

  • 🧑‍🔧 User Management
    • 🔑 Authenticate with Innopolis SSO
    • 📱 Connect Telegram account
    • ℹ️ Get user info
  • 🛡️ Tokens
    • 🔒 Generate JWT tokens for other services in the ecosystem
    • ✅ Check token validity with public key

Technologies

Development

Set up for development

  1. Install uv and Docker
  2. Install dependencies:
    uv sync
  3. Prepare for development (read logs in the terminal):
    uv run -m src.prepare

    Follow the provided instructions (if needed).

  4. Start development server:
    uv run -m src.api --reload
  5. Open the following link the browser: http://localhost:8002.

    The API will be reloaded when you edit the code.

Important

For endpoints requiring authorization, click "Authorize" button in Swagger UI!

Tip

Edit settings.yaml according to your needs, you can view schema in config_schema.py and in settings.schema.yaml

Set up PyCharm integrations

  1. Run configurations (docs). Right-click the __main__.py file in the project explorer, select Run '__main__' from the context menu.
  2. Ruff (plugin). It will lint and format your code. Make sure to enable Use ruff format option in plugin settings.
  3. Pydantic (plugin). It will fix PyCharm issues with type-hinting.
  4. Conventional commits (plugin). It will help you to write conventional commits.

Deployment

We use Docker with Docker Compose plugin to run the service on servers.

  1. Copy the file with environment variables: cp .example.env .env
  2. Change environment variables in the .env file
  3. Copy the file with settings: cp settings.example.yaml settings.yaml
  4. Change settings in the settings.yaml file according to your needs (check settings.schema.yaml for more info)
  5. Install Docker with Docker Compose
  6. Run the containers: docker compose up --wait
  7. Check the logs: docker compose logs -f

FAQ

Be up to date with the template!

Check https://github.com/one-zero-eight/fastapi-template for updates once in a while.

How to update dependencies

  1. Run uv sync --upgrade to update uv.lock file and install the latest versions of the dependencies.
  2. Run uv tree --outdated --depth=1 will show what package versions are installed and what are the latest versions.
  3. Run uv run pre-commit autoupdate

Also, Dependabot will help you to keep your dependencies up-to-date, see dependabot.yaml.

How to dump the database

  1. Dump:
    docker compose exec db sh -c 'mongodump "mongodb://$MONGO_INITDB_ROOT_USERNAME:$MONGO_INITDB_ROOT_PASSWORD@localhost:27017/db?authSource=admin" --db=db --out=dump/'
  2. Restore:
    docker compose exec db sh -c 'mongorestore "mongodb://$MONGO_INITDB_ROOT_USERNAME:$MONGO_INITDB_ROOT_PASSWORD@localhost:27017/db?authSource=admin" --drop /dump/db'

Contributing

We are open to contributions of any kind. You can help us with code, bugs, design, documentation, media, new ideas, etc. If you are interested in contributing, please read our contribution guide.

About

InNoHassle Accounts service for accessing websites and Telegram bots using your Innopolils account.

Topics

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors 4

  •  
  •  
  •  
  •