arky-js v1.0.4
Arky.js
Arky.js is a powerful annotation-based framework for building serverless applications using AWS Lambda and API Gateway. Inspired by Angular and NestJS, it simplifies development by providing decorators for defining modules, controllers, and services. The framework compiles your structured code into a Serverless Framework-compatible project, making deployment seamless.
Features
- Annotation-based architecture (
@Module,@Controller,@Get,@Post, etc.) - Dependency Injection for modules and services
- Automatic Serverless Framework integration
- Each controller is mapped to a separate Lambda function
- CLI for easy deployment (
arky deploy)
Installation
Install Arky.js globally or as a project dependency:
npm install -g arky-js # Global install
# or
npm install arky-js --save # Project installProject Structure
An Arky.js project follows a structured module-based approach:
project-root/
├── src/
│ ├── app.module.ts
│ ├── modules/
│ │ ├── user/
│ │ │ ├── user.controller.ts
│ │ │ ├── user.service.ts
│ ├── main.ts
├── .sfd/ # Compiled serverless files
├── package.json
├── tsconfig.json
└── README.mdExample Code
1. Defining a Module
import { Module } from "arky-js";
import { UserController } from "./user.controller";
import { UserService } from "./user.service";
@Module({
controllers: [UserController],
providers: [UserService],
})
export class UserModule {}2. Creating a Controller
import { Controller, Get, Post } from "arky-js";
import { UserService } from "./user.service";
@Controller("/users")
export class UserController {
constructor(private readonly userService: UserService) {}
@Get("/")
getAllUsers() {
return this.userService.getUsers();
}
@Post("/")
createUser() {
return this.userService.createUser();
}
}3. Implementing a Service
import { Injectable } from "arky-js";
@Injectable()
export class UserService {
private users = [{ id: 1, name: "John Doe" }];
getUsers() {
return this.users;
}
createUser() {
const newUser = { id: Date.now(), name: "New User" };
this.users.push(newUser);
return newUser;
}
}CLI Commands
Arky.js provides a command-line interface (CLI) for managing your serverless application.
Initialize a new project
arky init my-projectCompile project into Serverless-compatible format
arky buildDeploy the project to AWS
arky deployThis will generate a .sfd package and trigger the serverless deploy command.
License
This project is licensed under the MIT License - see the LICENSE file for details.
Future Improvements
- Support for WebSockets and GraphQL
- Middleware and Authentication support
- Plugin system for extending Arky.js functionality
Contributions are welcome! 🚀