Skip to content
Closed

Ahmd #23

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 40 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
name: CI

on:
push:
branches:
- main
- ahmd
pull_request:
branches:
- main

jobs:
build:
runs-on: ubuntu-latest

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 18

- name: Enable Corepack (pnpm)
run: |
corepack enable
corepack prepare pnpm@10.26.2 --activate

- name: Verify pnpm
run: pnpm --version

- name: Install dependencies
run: pnpm install --frozen-lockfile

- name: Run ESLint
run: pnpm run lint

- name: Run TypeScript build
run: pnpm run build
4 changes: 2 additions & 2 deletions backend/src/config/db.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import mongoose from 'mongoose';
import { logger } from './logger';
import { logger } from './logger.js';

export const connection = async () => {
try {
Expand All @@ -9,4 +9,4 @@ export const connection = async () => {
logger.error(err, 'Database connection is corrupted');
process.exit(1);
}
};
};
2 changes: 1 addition & 1 deletion backend/src/config/morgan.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import morgan from 'morgan';
import { logger } from './logger';
import { logger } from './logger.js';

export const morganMiddleware = morgan((tokens, req, res) => {
logger.info({
Expand Down
3 changes: 3 additions & 0 deletions commitlint.config.cjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
module.exports = {
extends: ['@commitlint/config-conventional'],
};
34 changes: 34 additions & 0 deletions eslint.config.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
import js from '@eslint/js';
import tseslint from '@typescript-eslint/eslint-plugin';
import tsParser from '@typescript-eslint/parser';
import globals from 'globals';

export default [
{
ignores: ['dist', 'node_modules'],
},
{
files: ['**/*.ts'],
languageOptions: {
parser: tsParser,
parserOptions: {
ecmaVersion: 'latest',
sourceType: 'module',
},
globals: {
...globals.node, // ✅ THIS fixes `process` errors
},
},
plugins: {
'@typescript-eslint': tseslint,
},
rules: {
...js.configs.recommended.rules,
...tseslint.configs.recommended.rules,

// Practical backend rules
'no-console': 'off',
'@typescript-eslint/no-explicit-any': 'off', // relax for now
},
},
];
14 changes: 12 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,24 @@
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"format": "prettier --write ."

"format": "prettier --write .",
"lint": "eslint .",
"prepare": "husky install",
"build": "tsc"
},
"keywords": [],
"author": "",
"license": "ISC",
"packageManager": "pnpm@10.26.2",
"devDependencies": {
"@commitlint/cli": "^20.2.0",
"@commitlint/config-conventional": "^20.2.0",
"@eslint/js": "^9.39.2",
"@typescript-eslint/eslint-plugin": "^8.51.0",
"@typescript-eslint/parser": "^8.51.0",
"eslint": "^9.39.2",
"globals": "^16.5.0",
"husky": "^9.1.7",
"prettier": "^3.7.4"
}
}
Loading