diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..8493495 --- /dev/null +++ b/.gitignore @@ -0,0 +1,164 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ +cover/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +.pybuilder/ +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +# For a library or package, you might want to ignore these files since the code is +# intended to run in multiple environments; otherwise, check them in: +# .python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# poetry +# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. +# This is especially recommended for binary packages to ensure reproducibility, and is more +# commonly ignored for libraries. +# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control +#poetry.lock + +# pdm +# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. +#pdm.lock +# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it +# in version control. +# https://pdm-project.org/#use-with-ide +.pdm.toml +.pdm-python +.pdm-build/ + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ + +# pytype static type analyzer +.pytype/ + +# Cython debug symbols +cython_debug/ + +# PyCharm +# JetBrains specific template is maintained in a separate JetBrains.gitignore that can +# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore +# and can be added to the global gitignore or merged into this file. For a more nuclear +# option (not recommended) you can uncomment the following to ignore the entire idea folder. +#.idea/ + +.nix-shell/ diff --git a/daffryn.md b/daffryn.md new file mode 100644 index 0000000..a19b13d --- /dev/null +++ b/daffryn.md @@ -0,0 +1 @@ +Rifqi Daffa Ariyana - Backend Dev diff --git a/helloworld.py b/helloworld.py new file mode 100644 index 0000000..07a504a --- /dev/null +++ b/helloworld.py @@ -0,0 +1,2 @@ +print("Hello World") + diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..73f12d0 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,15 @@ +[project] +name = "helloworld" +version = "0.1" +description = "Default template for PDM package" +authors = [ + {name = "daffryn", email = "ariyanadaffa@gmail.com"}, +] +dependencies = [] +requires-python = "==3.12.*" +readme = "README.md" +license = {text = "MIT"} + + +[tool.pdm] +distribution = false diff --git a/shell.nix b/shell.nix new file mode 100644 index 0000000..f7f3003 --- /dev/null +++ b/shell.nix @@ -0,0 +1,93 @@ +# shell.nix + +let + nixpkgs = fetchTarball "https://github.com/NixOS/nixpkgs/tarball/nixos-23.11"; + pkgs = import { + config = { + allowUnfree = true; + }; + overlays = []; + }; + + git = pkgs.git.overrideAttrs(oldAttrs: rec { + version = "2.42.0"; + }); + + podman = pkgs.podman.overrideAttrs(oldAttrs: rec { + version = "4.7.2"; + }); + + postgresql = pkgs.postgresql_15.overrideAttrs(oldAttrs: rec { + version = "15.4"; + }); +in + +pkgs.mkShell +{ + nativeBuildInputs = with pkgs; [ + pkgs.git + podman + nodejs_20 + python312 + python312Packages.pip + pkgs.pdm + redis + pkgs.postgresql + ]; + + shellHook = '' + alias docker=podman + export NIX_SHELL_DIR=$PWD/.nix-shell + export LC_ALL=C + export LANG=C.utf8 + + export PGDATA=$NIX_SHELL_DIR/db + export PGHOST=localhost + export PGUSER=postgres + export PGPASSWORD=password + + # Setup PostgreSQL + mkdir $NIX_SHELL_DIR + + trap \ + " + pg_ctl -D $PGDATA stop + pkill redis-server + " \ + EXIT + + if ! test -d $PGDATA + then + initdb -D $PGDATA --no-locale --encoding=UTF8 + fi + + HOST_COMMON="host\s\+all\s\+all" + sed -i "s|^$HOST_COMMON.*127.*$|host all all 0.0.0.0/0 trust|" $PGDATA/pg_hba.conf + sed -i "s|^$HOST_COMMON.*::1.*$|host all all ::/0 trust|" $PGDATA/pg_hba.conf + + pg_ctl \ + -D $PGDATA \ + -l $PGDATA/postgres.log \ + -o "-c unix_socket_directories='$PGDATA'" \ + -o "-c listen_addresses='*'" \ + -o "-c log_destination='stderr'" \ + -o "-c logging_collector=on" \ + -o "-c log_directory='log'" \ + -o "-c log_filename='postgresql-%Y-%m-%d_%H%M%S.log'" \ + -o "-c log_min_messages=info" \ + -o "-c log_min_error_statement=info" \ + -o "-c log_connections=on" \ + start + + echo "Setup database.. To access DB: psql -U $PGUSER -d postgres" + if ! psql -U $(whoami) -tAc "SELECT 1 FROM pg_database WHERE datname='django_sql'" | grep -q 1; then + createuser -U $(whoami) + psql -U $(whoami) -d postgres -c "CREATE DATABASE $(whoami) OWNER $(whoami);" || true + psql -U $(whoami) -d postgres -c "ALTER ROLE $PGUSER SUPERUSER;" + psql -U "$PGUSER" -d postgres -c "CREATE DATABASE django_sql" || true + fi + + echo "Run redis.. See log on $NIX_SHELL_DIR/redis.log" + nohup redis-server > $NIX_SHELL_DIR/redis.log 2>&1 & + ''; +} \ No newline at end of file diff --git a/src/helloworld/__init__.py b/src/helloworld/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tests/__init__.py b/tests/__init__.py new file mode 100644 index 0000000..e69de29