
Security News
Another Round of TEA Protocol Spam Floods npm, But It’s Not a Worm
Recent coverage mislabels the latest TEA protocol spam as a worm. Here’s what’s actually happening.
Async SQLAlchemy framework with FastAPI integration - reusable foundation for building data services
Async SQLAlchemy framework with FastAPI integration - reusable foundation for building data services
Servicekit is a framework-agnostic core library providing foundational infrastructure for building async Python services with FastAPI and SQLAlchemy.
pip install servicekit
from servicekit.api import BaseServiceBuilder, ServiceInfo
app = (
BaseServiceBuilder(info=ServiceInfo(display_name="My Service"))
.with_health()
.with_database("sqlite+aiosqlite:///./data.db")
.build()
)
servicekit/
├── database.py # Database, SqliteDatabase, SqliteDatabaseBuilder
├── models.py # Base, Entity ORM classes
├── repository.py # Repository, BaseRepository
├── manager.py # Manager, BaseManager
├── schemas.py # EntityIn, EntityOut, PaginatedResponse
├── scheduler.py # JobScheduler, AIOJobScheduler
├── exceptions.py # Error classes
├── logging.py # Structured logging
├── types.py # ULIDType, JsonSafe
└── api/ # FastAPI framework layer
├── router.py # Router base class
├── crud.py # CrudRouter, CrudPermissions
├── auth.py # API key authentication
├── app.py # Static app hosting
├── middleware.py # Error handlers, logging
└── routers/ # Health, Jobs, System, Metrics
from servicekit.api import BaseServiceBuilder, ServiceInfo
app = (
BaseServiceBuilder(info=ServiceInfo(display_name="My Service"))
.with_health() # Health check endpoint
.with_database(url) # Database configuration
.with_jobs(max_concurrency=10) # Job scheduler
.with_auth() # API key authentication
.with_monitoring() # Prometheus metrics
.with_app("./webapp") # Static web app
.include_router(custom_router) # Custom routes
.build()
)
from servicekit import BaseRepository, Entity
from sqlalchemy.orm import Mapped, mapped_column
class User(Entity):
__tablename__ = "users"
name: Mapped[str] = mapped_column()
email: Mapped[str] = mapped_column()
class UserRepository(BaseRepository[User, ULID]):
def __init__(self, session: AsyncSession):
super().__init__(session, User)
from servicekit.api import CrudRouter, CrudPermissions
router = CrudRouter.create(
prefix="/api/v1/users",
tags=["Users"],
entity_in_type=UserIn,
entity_out_type=UserOut,
manager_factory=get_user_manager,
permissions=CrudPermissions(create=True, read=True, update=True, delete=False)
)
See the examples/ directory for complete working examples:
core_api.py - Basic CRUD servicejob_scheduler_api.py - Background job executionapp_hosting_api.py - Hosting static web appsauth_basic.py - API key authenticationmonitoring_api.py - Prometheus metricsSee docs/ for comprehensive guides and API reference.
make test # Run tests
make lint # Run linter
make coverage # Test coverage
AGPL-3.0-or-later
FAQs
Async SQLAlchemy framework with FastAPI integration - reusable foundation for building data services
We found that servicekit demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 0 open source maintainers collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
Recent coverage mislabels the latest TEA protocol spam as a worm. Here’s what’s actually happening.

Security News
PyPI adds Trusted Publishing support for GitLab Self-Managed as adoption reaches 25% of uploads

Research
/Security News
A malicious Chrome extension posing as an Ethereum wallet steals seed phrases by encoding them into Sui transactions, enabling full wallet takeover.