Skip to content
Merged
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
21 changes: 21 additions & 0 deletions .githooks/commit-msg
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
#!/bin/sh

commit_msg_file="$1"
commit_msg="$(head -n 1 "$commit_msg_file")"

pattern='^(feat|fix|docs|style|refactor|test|chore|ci|build|perf)\(#[0-9]+\): .+'

if echo "$commit_msg" | grep -Eq "$pattern"; then
exit 0
fi

echo "Invalid commit message:"
echo " $commit_msg"
echo ""
echo "Expected format:"
echo " feat(#1): add trend metrics"
echo ""
echo "Allowed types:"
echo " feat, fix, docs, style, refactor, test, chore, ci, build, perf"

exit 1
26 changes: 26 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
## Problem

Describe what is broken.

## Expected behavior

Describe what should happen instead.

## Steps to reproduce

1.
2.
3.

## Environment

- OS:
- Python version:
- Branch:
- Command used:

## Error output

```text

```
22 changes: 22 additions & 0 deletions .github/ISSUE_TEMPLATE/feature.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
## Goal

Describe what should be achieved.

## Why

Explain why this task is useful for the project.

## Scope

-
-
-

## Acceptance criteria

- [ ]
- [ ]
- [ ]

> [!NOTE]
> Priority:
11 changes: 11 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
version: 2

updates:
- package-ecosystem: "pip"
directory: "/"
schedule:
interval: "weekly"
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
27 changes: 27 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
## What changed?

-
-
-

## Related issue

Closes #

## Tests

- [ ] I ran `pytest`
- [ ] Existing tests pass
- [ ] I added or updated tests where necessary
- [ ] Not needed because this only affects documentation or repository setup

## Checklist

- [ ] The change is focused
- [ ] No secrets or API keys are included
- [ ] Documentation was updated if needed
- [ ] CI is expected to pass

## Notes

-
37 changes: 37 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# This workflow ensures that the code is tested and meets quality standards on every push and pull request
name: Tests

on:
push:
pull_request:
branches:
- main
- develop

jobs:
tests:
runs-on: ubuntu-latest

steps:
- name: Check out repository
uses: actions/checkout@v4

- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.11"

- name: Install project
run: |
python -m pip install --upgrade pip
pip install -e ".[dev]"

- name: Run tests
run: pytest

- name: Check code quality
run: ruff check .

- name: Check code formatting
run: ruff format --check .

51 changes: 51 additions & 0 deletions .github/workflows/commit-message.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
# This workflow is needed to validate commit messages in pull requests, if the githook was bypassed
name: Commit Message

on:
pull_request:

permissions:
contents: read
pull-requests: read

jobs:
validate-commit-messages:
name: Validate commit messages
runs-on: ubuntu-latest

steps:
- name: Check commit message
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Fetch base branch
run: git fetch origin "${{ github.base_ref }}"
- name: Validate commit message
shell: bash
run: |
pattern='^(feat|fix|docs|style|refactor|test|chore|ci|build|perf)\(#[0-9]+\): .{1,50}$'
invalid=0

while IFS= read -r commit_message; do
echo "Checking: $commit_message"

if echo "$commit_message" | grep -Eq '^(Merge|Revert)'; then
echo "Skipping technical commit: $commit_message"
continue
fi

if ! echo "$commit_message" | grep -Eq "$pattern"; then
echo "::error::Invalid commit message: $commit_message"
invalid=1
fi
done < <(git log --format=%s "origin/${{ github.base_ref }}..HEAD")

if [ "$invalid" -ne 0 ]; then
echo ""
echo "Expected format:"
echo " feat(#1): add feature"
echo ""
echo "Allowed types:"
echo " feat, fix, docs, style, refactor, test, chore, ci, build, perf"
exit 1
fi
9 changes: 5 additions & 4 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,14 @@
__pycache__
.pytest_cache
*.pyc
/src/fx_converter_lab.egg-info
/src/argus.egg-info


# IDE settings
.vscode/
.vscode

# Temporary files (exercise files)
temp/
# ruff cache
.ruff_cache

# Virtual environment
.env
3 changes: 0 additions & 3 deletions .vscode/settings.json

This file was deleted.

100 changes: 100 additions & 0 deletions CODE_OF_CONDUCT.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
# Code of Conduct

## My Pledge

ARGUS is a technical learning, portfolio and open-source project focused on market analytics, data workflows and future AI-assisted monitoring.

I want this project to be a respectful and constructive space for learning, collaboration and technical discussion.

Everyone who participates in this project is expected to communicate with professionalism, patience and respect.

## Expected Behavior

Examples of behavior that helps this project:

- using welcoming and respectful language
- giving constructive feedback in issues, pull requests and reviews
- explaining technical suggestions clearly
- being patient with questions, mistakes and learning processes
- keeping discussions focused on the project and its goals
- respecting different levels of experience
- reporting bugs or problems with useful context
- proposing changes without attacking people

## Unacceptable Behavior

The following behavior is not acceptable:

- insults, harassment or personal attacks
- discriminatory language or behavior
- aggressive, hostile or mocking comments
- sexualized language or unwanted attention
- trolling, spam or repeated off-topic comments
- publishing private information without permission
- deliberately disruptive behavior in issues, pull requests or discussions
- pressuring maintainers to accept changes immediately

## Scope

This Code of Conduct applies to all project spaces, including:

- GitHub issues
- pull requests
- code reviews
- GitHub discussions
- the project wiki
- documentation contributions
- any future community spaces connected to ARGUS

It also applies when someone represents the project in public project-related communication.

## Maintainer Responsibilities

Project maintainers are responsible for keeping the project space respectful and productive.

Maintainers may take appropriate action in response to unacceptable behavior, including:

- asking someone to change their behavior
- editing or removing comments
- closing issues or pull requests
- limiting participation
- blocking users from the project if necessary

Maintainers should apply these rules fairly and focus on protecting a constructive technical environment.

## Enforcement Principles

Enforcement should be proportional to the situation.

Possible responses include:

1. **Clarification**
A maintainer explains why a behavior is inappropriate and asks for a change.

2. **Warning**
A maintainer gives a clear warning if the behavior continues or is serious.

3. **Temporary restriction**
A user may be temporarily limited from participating in discussions or pull requests.

4. **Permanent restriction**
A user may be blocked from the project in cases of harassment, repeated abuse or serious misconduct.

## Project Culture

ARGUS is built around careful technical growth.

The project values:

- clear thinking
- reliable code
- honest documentation
- constructive review
- long-term learning
- respectful collaboration

Strong technical opinions are welcome. Personal attacks are not.

## Attribution

This Code of Conduct is inspired by common open-source community guidelines and adapted for the ARGUS project.
Loading
Loading