Skip to content
This repository was archived by the owner on Jan 8, 2025. It is now read-only.

style: format runner #1

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
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
160 changes: 160 additions & 0 deletions incubyte-backend-coding-exercise-main/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,160 @@
#Project specific
*.db
*.swp
.vscode

# 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/
pip-wheel-metadata/
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/

# Translations
*.mo
*.pot

# Django stuff:
*.log
*.log.*
local_settings.py
db.sqlite3
db.sqlite3-journal

# Flask stuff:
instance/
.webassets-cache

# Scrapy stuff:
.scrapy

# Sphinx documentation
docs/_build/

# PyBuilder
target/

# Jupyter Notebook
.ipynb_checkpoints

# IPython
profile_default/
ipython_config.py

# pyenv
.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

# PEP 582; used by e.g. github.com/David-OConnor/pyflow
__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/

*.jpeg
*.jpg
*.png
*.gif
*.bmp
*.tiff
*.tif
*.webp
*.ico
*.svg
*.svgz

*.db
*.sqlite

*.zip
*.yaml
*.yml

*.ckpt
*.pyc

*.lock
*.tmp
8 changes: 8 additions & 0 deletions incubyte-backend-coding-exercise-main/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -72,8 +72,13 @@ python server.py
Below are a few questions which expand the scope of the service. Please pick one and describe your approach.

* What are some real-world constraints to booking appointments that would add complexity to this API and how would they impact the design.
- Real-world constraints to booking appointments add significant complexity to the API. For example, ensuring no overlapping appointments for the same doctor or location requires implementing validation logic at both the API and database levels. Handling time zones would involve storing timestamps in UTC and converting them dynamically based on user preferences. Additionally, managing cancellations and no-shows requires creating APIs for tracking cancellations and enforcing penalties or rescheduling options. Finally, respecting doctor availability and working hours involves extending the availability model to support recurring schedules and holidays. These constraints require careful API design, robust validation, and detailed error handling to ensure a seamless user experience.

* How would our design change if this API was opened up to external users?
- If this API were opened up to external users, the design would need stronger focus on security, scalability, and usability. This includes implementing robust authentication (e.g., OAuth2), ensuring data privacy, and rate-limiting to prevent misuse. Clear API documentation and versioning would be crucial for a seamless developer experience. Additionally, monitoring, logging, and tiered access plans could support external users while maintaining system reliability.

* What concerns are there with multi-tenant data management and how could we modify the design to increase data security?
- In multi-tenant data management, key concerns include data isolation, performance scalability, and security compliance. To increase data security, we can implement row-level access control or use separate schemas/databases for each tenant to ensure strict data isolation. Encrypting sensitive data at rest and in transit protects against breaches, while adding audit logs tracks data access. Additionally, using tenant-specific encryption keys and role-based access control (RBAC) further enhances security and ensures only authorized users access their respective data.

#### Suggestions ####

Expand Down Expand Up @@ -117,3 +122,6 @@ With that, let's jump right in!
### Who do I talk to? ###
* If you have any questions prior to your interview, please reach out to your designated Incubyte recruiting contact and he/she will get back to you as soon as possible.
* If you have any feedback on the interview question after you're done, let us know, we're always looking into improving the interview process. Thanks!


# Code Formatted by isort and black
Loading