From c98fffeada4b98ab30760721768dbdfea87e0a73 Mon Sep 17 00:00:00 2001 From: klein panic Date: Fri, 1 Nov 2024 01:20:14 -0400 Subject: [PATCH] Entirely new file path. Addd Standard Practices, Moved Docs --- BranchingPracticesAndStandards.md | 220 ----- Business-itselfs/Business-Structure | 2 - Business-itselfs/MidasTechnologiesBylaws.pdf | Bin 242656 -> 0 bytes Midas-Tech.md | 168 ---- Oil Oracle 1 TechOverview.docx | Bin 20611 -> 0 bytes .../BusinessPlans/ExecutiveSummary.md | 184 ++++ .../BusinessPlans/oil_oracle.md | 117 +++ docs/MidasTechNologiesLLCBylaws.md | 186 ++++ docs/PoliciesAndStandards/CodingStandards.md | 245 +++++ .../CommunicationStandards.md | 125 +++ .../DocumentationStandards.md | 170 ++++ .../PoliciesAndStandards/FilePathStandards.md | 176 ++++ .../GitAndGithubStandards.md | 846 ++++++++++++++++++ docs/PoliciesAndStandards/README.md | 83 ++ docs/README.md | 69 ++ idealstructure.md | 65 -- {API => src/API}/API_1.ipynb | 0 {API => src/API}/API_2 (1).ipynb | 0 .../Trading_Bot_Development_Strategy (1).docx | Bin .../Data-Collection}/.gitignore | 0 .../Data-Collection}/WebScraper/README.md | 0 .../WebScraper/assets/oil_key_words.txt | 0 .../WebScraper/data/oil_news.json | 0 .../data/preprocessed_oil_news.json | 0 .../Data-Collection}/WebScraper/main.py | 0 .../Data-Collection}/WebScraper/main.py.bak | 0 .../oil_news_preprocessor.cpython-311.pyc | Bin .../oil_news_scraper.cpython-311.pyc | Bin .../backups/oil_news_preprocessor.py.bak | 0 .../scrapers/backups/oil_news_scraper.py.bak | 0 .../scrapers/oil_news_preprocessor.py | 0 .../WebScraper/scrapers/oil_news_scraper.py | 0 .../scrapers/tests/author_info.json | 0 .../scrapers/tests/author_scraper_test.py | 0 .../scrapers/tests/author_scraper_test.py.bak | 0 .../scrapers/tests/selenium_webdriver_test.py | 0 .../Data-Collection}/WebScraper/setup.py | 0 .../GUSHTradingBotV1.0.py | 0 38 files changed, 2201 insertions(+), 455 deletions(-) delete mode 100644 BranchingPracticesAndStandards.md delete mode 100644 Business-itselfs/Business-Structure delete mode 100644 Business-itselfs/MidasTechnologiesBylaws.pdf delete mode 100644 Midas-Tech.md delete mode 100644 Oil Oracle 1 TechOverview.docx create mode 100644 docs/BusinessDocumentation/BusinessPlans/ExecutiveSummary.md create mode 100644 docs/BusinessDocumentation/BusinessPlans/oil_oracle.md create mode 100644 docs/MidasTechNologiesLLCBylaws.md create mode 100644 docs/PoliciesAndStandards/CodingStandards.md create mode 100644 docs/PoliciesAndStandards/CommunicationStandards.md create mode 100644 docs/PoliciesAndStandards/DocumentationStandards.md create mode 100644 docs/PoliciesAndStandards/FilePathStandards.md create mode 100644 docs/PoliciesAndStandards/GitAndGithubStandards.md create mode 100644 docs/PoliciesAndStandards/README.md create mode 100644 docs/README.md delete mode 100644 idealstructure.md rename {API => src/API}/API_1.ipynb (100%) rename {API => src/API}/API_2 (1).ipynb (100%) rename {API => src/API}/Trading_Bot_Development_Strategy (1).docx (100%) rename {Data-Collection => src/Data-Collection}/.gitignore (100%) rename {Data-Collection => src/Data-Collection}/WebScraper/README.md (100%) rename {Data-Collection => src/Data-Collection}/WebScraper/assets/oil_key_words.txt (100%) rename {Data-Collection => src/Data-Collection}/WebScraper/data/oil_news.json (100%) rename {Data-Collection => src/Data-Collection}/WebScraper/data/preprocessed_oil_news.json (100%) rename {Data-Collection => src/Data-Collection}/WebScraper/main.py (100%) rename {Data-Collection => src/Data-Collection}/WebScraper/main.py.bak (100%) rename {Data-Collection => src/Data-Collection}/WebScraper/scrapers/__pycache__/oil_news_preprocessor.cpython-311.pyc (100%) rename {Data-Collection => src/Data-Collection}/WebScraper/scrapers/__pycache__/oil_news_scraper.cpython-311.pyc (100%) rename {Data-Collection => src/Data-Collection}/WebScraper/scrapers/backups/oil_news_preprocessor.py.bak (100%) rename {Data-Collection => src/Data-Collection}/WebScraper/scrapers/backups/oil_news_scraper.py.bak (100%) rename {Data-Collection => src/Data-Collection}/WebScraper/scrapers/oil_news_preprocessor.py (100%) rename {Data-Collection => src/Data-Collection}/WebScraper/scrapers/oil_news_scraper.py (100%) rename {Data-Collection => src/Data-Collection}/WebScraper/scrapers/tests/author_info.json (100%) rename {Data-Collection => src/Data-Collection}/WebScraper/scrapers/tests/author_scraper_test.py (100%) rename {Data-Collection => src/Data-Collection}/WebScraper/scrapers/tests/author_scraper_test.py.bak (100%) rename {Data-Collection => src/Data-Collection}/WebScraper/scrapers/tests/selenium_webdriver_test.py (100%) rename {Data-Collection => src/Data-Collection}/WebScraper/setup.py (100%) rename GUSHTradingBotV1.0.py => src/GUSHTradingBotV1.0.py (100%) diff --git a/BranchingPracticesAndStandards.md b/BranchingPracticesAndStandards.md deleted file mode 100644 index 90c9e1f..0000000 --- a/BranchingPracticesAndStandards.md +++ /dev/null @@ -1,220 +0,0 @@ -# Branching Practices and Standards for MiadTechnologies - -## Overview - -In this repository, we use a structured branching strategy to keep our code organized, stable, and easily manageable. Our branching workflow consists of **two main branches**—`main` and `dev`—and **feature branches** created for specific work. This approach helps to streamline the development process, manage updates efficiently, and maintain code quality. - ---- - -## Branch Structure - -### 1. `main` Branch - -- The `main` branch is the **production-ready** branch. Only stable and tested code should be merged here. -- All code on `main` is reviewed and approved before merging. -- Only authorized personnel (project maintainers) can merge code into `main`. - -### 2. `dev` Branch - -- The `dev` branch is for **testing** new features, bug fixes, and other updates before they go to `main`. -- Code pushed to `dev` should come through **pull requests** from feature branches and is reviewed before merging. -- All developers push their work to `dev` via feature branches. - -### 3. Ad-hoc Branches - -- Each new feature, bug fix, or task gets its **own branch off `dev`**. -- Ad-hoc branches should be named according to the work they address, and/or the dir or file name or path (e.g., `DataCollection-NewScraper`, `bugfix-button`, or `docs-readme`). -- Once completed, the feature branch is **merged back into `dev`** through a pull request, then reviewed, and tested. -- Ad-hoc branches can be nested, and should be when doing work on complex code sets. For instance, when doing work in dev, and working on DataCollection, you should branch into DataCollection to do all the work specific to that functionality. Knowing that DataCollection can be a complex branch in of itself, one can further branch into a properly named branch to match the work they address (e.g `git check dev` (Main Development Branch), then `git checkout DataCollection dev` (Known branch off dev), then `git checkout -b {functionality} DataCollection` (new branch to address new changes branched off DataCollection branch)) - ---- - -## Workflow for Contributors - -### Step 0: If You Do Not Have The Repository - Clone The Repository - -Start by cloning the repository to your local machine: - -```bash -git clone git@github.com:MiadTechnologiesLCC/MidasTechnologies.git -cd MidasTechnologies -``` -> Note if you're new, or not a known contributor this will not work. Contact admins - -### Step 1: Set Up Branch Tracking - -Make sure you have the latest branches set up locally: - -```bash -git fetch origin -``` - -### Step 2: Check Out `dev` for New Work - -Always base new work off the `dev` branch: - -```bash -git checkout dev -git pull origin dev # Make sure your dev branch is up to date -``` - ---- - -## Working with Ad-Hoc Branches - -### Step 1: Create a New Ad-Hoc Branch - -For each new task or feature, create a new branch off `dev`. Name your branch descriptively: - -```bash -git checkout -b ad-hoc-branch-name dev -``` - -Example: - -```bash -git checkout -b ad-hoc-login dev -``` - -### Step 2: Make and Commit Changes - -As you work on the feature, make commits regularly: - -```bash -git add . -git commit -m "Descriptive commit message about the change" -``` - -### Step 3: Push the Feature Branch to GitHub - -When you’re ready to share your work, push the feature branch to GitHub: - -```bash -git push -u origin ad-hoc-branch-name -``` - ---- - -## Pull Request and Review Process - -Once your feature branch is ready, follow these steps: - -1. **Create a Pull Request (PR)**: Go to GitHub, find your branch, and create a pull request targeting `dev`. -2. **Request a Review**: Mention the team lead or project maintainer in your PR and ask for a review. -3. **Address Feedback**: Make any requested changes by committing and pushing to your feature branch. - -Once your PR is approved, it can be merged into `dev`. - ---- - -## Merging into `main` - -Only the team lead or project maintainer will manage merging from `dev` to `main` once testing and reviews are complete. This ensures `main` remains stable. -The Project Maintainer currently, and author of this file is KleinPanic - ---- - -## Git Commands Cheat Sheet - -Here’s a quick reference for Git commands relevant to our workflow: - -1. **Clone the repository**: - - ```bash - git clone git@github.com:MiadTechnologiesLCC/MidasTechnologies.git - ``` - -2. **Create a new branch**: - - ```bash - git checkout -b branch-name dev - ``` - -3. **Add changes**: - - ```bash - git add . - ``` - -4. **Commit changes**: - - ```bash - git commit -m "Your message here" - ``` - -5. **Push a branch to GitHub**: - - ```bash - git push -u origin branch-name - ``` - -6. **Switch branches**: - - ```bash - git checkout branch-name - ``` - -7. **Fetch updates from GitHub**: - - ```bash - git fetch origin - ``` - -8. **Pull updates from a branch**: - - ```bash - git pull origin branch-name - ``` - -9. **Delete a branch (locally)**: - - ```bash - git branch -d branch-name - ``` - -10. **Delete a branch (remotely)**: - - ```bash - git push origin --delete branch-name - ``` - ---- - -## Example Workflow - -Here’s an example of a typical workflow for a new feature: - -1. Switch to `dev` and ensure it’s up to date: - - ```bash - git checkout dev - git pull origin dev - ``` - -2. Create a new branch: - - ```bash - git checkout -b feature-user-profile dev - ``` - -3. Work on the feature, adding and committing changes as you go. - -4. Push your branch to GitHub: - - ```bash - git push -u origin feature-user-profile - ``` - -5. Create a pull request from your branch to `dev` on GitHub, request a review, and wait for approval. - ---- - -## Summary - -- `main`: Production-ready, stable code only. -- `dev`: Testing branch; pull requests from feature branches go here. -- **Feature Branches**: Branch off `dev` for specific features or bug fixes. - -Following this workflow will ensure our codebase remains organized and stable while allowing for efficient development and collaboration. - -> Contact Admins with questions. diff --git a/Business-itselfs/Business-Structure b/Business-itselfs/Business-Structure deleted file mode 100644 index 4759bf5..0000000 --- a/Business-itselfs/Business-Structure +++ /dev/null @@ -1,2 +0,0 @@ -# Business Structure and Legalities. - diff --git a/Business-itselfs/MidasTechnologiesBylaws.pdf b/Business-itselfs/MidasTechnologiesBylaws.pdf deleted file mode 100644 index 598075d521c67cb6423c4ec786bc0e9090c864d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 242656 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

oK0Q1;`eD^pLFLb~ zX)^0>oo~9fW#cQw%Ev2A^|@4)dIGp-dD)eJE}3_Zw<#}B-)>w7l(btnpzU-~P#th1Aite>WQlv=~Ic~;Eru4k;~=KGCjZr!=o^>NCy;%e=t#gf)VEk})K z9}ToFu-iT3nep_^uW!h%*?Y-(X?oqW3!gWyhzn1i9{BgK{jAU}spXsHo~>lp?h?JJ zdZjJK@pIqnn{(GRN2wkS*5}@^IZ`!CHfxjB8!4^1WpCuJUAFmZIDKle_y+IHbw#RE z@AAIUyEgG_lh~S13%@u|dFBy&ZOYvUCKtY0vzdSmg;);C&Z z%Gn3=lIKQRolg6{nemOFnaLafO)OHzB}y8zw&%?{leImsbh1@rSi53`($iqkEcV$O zqa(7fwU(yujkNzJAbm!zReouCP}kh!dP(7%vv2yU=x*P^SMZ8*(%T_Yp1K`&va-psqZBd0Q~X1vC;Cr%Ii!qFK4P%7#2Dya8_f$mv zgbzGxSj%vmsqDqw#l`x|xf8?^><=7lP_Fv!xAJ8V^BfKf)&i>pxd$-^SR1+-rZcTm zh&X+cJ%)dWV1f1nzNYEcyBWVT%7t7|X4q>vrL3PjLd<}316M+?UF2Qs>Q@Zc*mGEJ zhy<*)@XX3ywb|SMz|osGT^+jrnQe6~RDXCaYJOHo$h2GgXI<%w^~-%CdgWTI=h|zb zS7ycdzCG|iaCZgo*8J;1-378+=U;c0{!Ixml^+fxjcz?#zE9n=UTOxzXz67QJRW&A|7)7k@?z8U(1=Z0A_o-JS}RzqsSjo7*@G@R_OVxw5^+s*8ICxkiBp3&3kVR)DL== z18}yjNR1+;m-D%;g>13SXW%ymgP0Q|;&8GpnklwjR0KxsSiEf5&oh;nf#x z^(*E@biS)CnYyqle&(%xx2}9Mxt2KHsBnsx;g0Tuk9p&k6=o(DGEzn;Ps*~y@k?>*4;(0pe75*hNQoTfX>5JFae>?HwcX659{qPL2LjRwEipEy; z=VnX({j(>vbzXjN-MkR#^M5y#1~%XN!e&yJ>-cylpUI-rhvq4Ixn5G}J+Gf%VB1`t zJtyYwgR@fMCjYeLuI&igbxeGT)E?Kzr&e=6zul_#gnM@L`4j58ym}#C;(dM7W^kvw z-_ibW%xxPV_Tt}Z`H*!8=y`DU73oc7G_rOEG??we;P z=7^k5ot$~he0J0}*DKrBF1wa%yfuIK%GTs7$5cNQ+1zZod?!KJ->dDIsc-B$%Zm^8 zN?n&q{=nF)Z$7E~r$%qKHQRNAib)55o9tV(_uygPdFu=3Ze!EG^y8Ej+j)~4N5Zc! z+5gU@cm1mT4^q9aQ?qNfPJFjI-F>>#-(?qf#_ca$_+dO>0KZ+Pi>OXkWCKIOONJcbonCF{0tT~xd>SM|>H&YPEx zof4Pry8l3sE&u8dzsb9-dB4By>Dg+$a@XpfgKAsL-(K0V_vGAfYSZ7Ft=w_@%EH~g zvacp2f8gqUZ&>DXCt$(%_~i8Ti$ou^qoocT(uKQ&XIuF&T)se7~jOW@k&Gd`Go+LknJ z``Ycg)~9dZw{DpF)$UDg%iPC*+rP`NY5E@cKKYH!dyV%l)870&xw}19s=n}#>YB6~ zuNtn^vipte)OR1+f8@X2>c{^N{AXM(?ZGo8HJtSn>#2)8!Dsn$Zg@zYoL0E7EV3f4 zYRbQC*0|2_$6G6G?{%0zURz;3@04+c{=I(wM~8oCtkLp+Tv;O*&%wLH^pE$xsqddu zzdY+|(iZ2t_{G^9jvM;r#rg_dBPXh?>X5pjd@;gAe64HsMc0&$oQv^1Vuz1rggKT7 zWGZ=o5oKN|YVPJE5`5I>O;?1@wCROf6n?mod%DuW>D*Ei&Fq3`$Ta9c!&segj>gH#w zf_dq7A9T)3AJ}Zm&9UESoq1#Yw>_+Lo>xj&OiNe%kaOPJMXyBj~- zyk|WBNr!RX+sgSh&nu^0x~uc)FXM;P^HL8~&f{-Pubjqw{#%X9zVynl3wLuq?G^fw zdS2^+&H3X8HruRjOs}?6yuaD@=Y#rX&x0rLGgYgdKl964)0ffi`_ikf%?_!{3)+5g z$vf`JyYzi`?K66LE927ElS{HUdtSfpab0Zkx_qBq+hW?$NRcFAk&CE2?@uYXsI zwf5OnXYle?=B2O7m$sf>@>+fJy1Qzz_Onag8ovC+`tnxxrLU_s_tvV_?w|SPt@+E} zvP;VkEcwJg`Bbx7X}ixWzS$+R7hirdnyaUO{pBaFxq9nEUVe(Qij9k2e){!`l1f{v z*tqq6)2}bT^tAW#%TLE%msI|>ioMt1H~sq6m!H@|ckSV{ioNGDS1(_4u3moTT)lkB zxq9y-wPNpWvWmU8xpdc_rzI~d&tH7`dD``tpXaUiIv?%0{8IHi&(uktPk*YFiZ|U) znY^n@t#qo-D?Njit8;?Fk1lzwGa$DF{N<|LOQo%z;j)w0X-{0YOD#5hX316Km%DCFiL0Hw@4xd)Q-hbgk1bih z(DVLQt6HD4{8L3+R;>}-sk&bAR5$mE_6#TGUu9ROr(dk7Gmv)N*A}pP&go?vW}4JR z9+|e;)MVA|bKfpZ*3D7B?JnyrqknjEMQGOY*Pqq)Ed3w+N`2kuds)5T)*G%{{%8Kd zt6dq{y{|R@TNTCf*S`j_o)>7=OZU9i{4f6S!#liqV(Fn4*O?bH8)>t1(mJH2Dxr+VSO@@$KH`G-H|aUcI3YjN-G!;1a<$9F5s zy!U@tQQrReucgfUc>#N}t~`!!k&EuVrgb61`{t?@-TKD9E2rmqFV@|fA3Jx-$IX}2 zHmu*Ye%U7BkSee3%PhA%i8f5l-y<8GUc9>Yne57b-nXsq`#0oDE#zAeB*%99$>D_J zoFzJ~b5E8VCC01fH~iLn%2%Qg;eU_AE7~TPt=!sXul1i2eWxFm1?++A+UCa#o}1@T z{Uc}fpA{cY`dfbuX#vr~M*pL#b%BZ<_cy%Xt>vc8lRQ;=!~IX?OD8KnUNZlv zrSn|(NQd6sInO$i6F3)&=_pRIJZH{TR;qPc;nfz!t=|H_sob-R^LzW_`J?4W{7bL1 z&u+TE>-fq1C)F2Yt{;}PJ%0G>#zPwlocwAt+NN2b3~0#;o#Q@t;iHbM&?R-FdwV|K zFjQSKcftQWtI|)^&uvz|+E{X~eA3)5pAV`zlkX^=Utah~brV}J&+8Khi#q-+mr-lK zT=9X^(yedm`3oxwxO%zcC;gwOe>(D$=+9X-&ii!lPkn#-Y0=a_F6*YwKfV6R^-s}U z*~|Y-Jl0=T!`_tQmNl`~24QTh(vw>dAk5_ujpi`F`8?Tfg7hzftZhvGLm@Tp~30(z%;{ zmFk|$Z?Ak3Qntz>bZ(Yk>GHP8k7C}%JiJo6u54Z5y3%#Ux2$F7uJe2U!}4SCR;2p;Xl@Yy8hk#OZ@x&7wb3gU%G$m{)pjDHzRHv4O~ z*X;2;|I{tCe`J05`e63K@}~E!_8fI0F_M2Q7FIijIjwJ*(^ALzSJ+Lh$Ir+6jK>+T zGk#}0-%Phq2wXcYZ_&knKR+pH9rRB1t!%Av`Pc0AA@JvnnmJw{G^ae+{K@jC(;1;Z z0qd3s{n3eOx_?@J1xx)T``e*!UzOGFZoGRTuSF;)Y6Z*XH$2v-&u#mC>#zR?mglZh z9~}Rt{%!d;tKg>lH|=lO-`sy=|51&D#dALQ1vYJ+b1S6j>l`*e=jDQ48@eaU{`dN` z`r~?0t%EA{OA9!c{mB0PdJ&8C@7cd*i)$V9eP{lz{2l+h{&(l!>Aze5?)|%k3jC)Q z$bMm|J?LOySP}MN(F4_kr<VfmrIoct;_^FE{`T|e@!(^lxc_nWyD^^cl6`Ga-WoSrvP^yyI}*K5=EpQt~n z{`7KD)1U1%ar-plr>;M3{?uAywWtYmv~%$W{S2{hy?^>%-SYdL^s~EmV{PZ3>38qs zWp3Yg`_|jHeP!a-ch7C9zG+!zU)^APbY9x|4WHjwPWhgHWBLv5w@1GPRqx#EwN7!* zwR;Kmsr9+_+3z=$->iO9`;GDU24$J!oyAO_tatA$p0?)6oYyH{onf6~e)MkgkW{8ObW zxw92=?N7+}Yzei_%bcAbzWM&P`&;jCx8D+e%Ad17tv+wb+v?x$ztew*|1SSM;jrxO zkF87BDtX@CJ7HVbgl#61wp~y5iq@@{t+%abu2-%Xt~ajlcDnR!>+iL{_x_&zd-m`4 zY84529yV|G^L%kKdrTsXD_lRUdhnlhIeR)=I{S0B=j`{n^tkjm^}J7b?9gB6e@K|q zU$xA8kNL**r1?kKh2*_zp449|E4p;-)aD%z?mbvv^+oiK_@A?u@$WcRg}${geRnC@ z@YG7(BKE@jb637U&v>oj8Hc2a`iW&b9qP>{q%k|+ESSZqp4>G;`iidl;-wg#DP z4YpH1H{VV5hgtXHNDuZ|>S-I|1UGl=;IQr!&OEo`tNYc+R++FvQ`8n*Vhq(jkX0JK zR^WW%t$)vKc0D^CKXbvvi}@_=C+>6dO|BP^dC9YQ=i&dBe>vhFe^IYkYuxal^kDIf zg6}Mu&)&bA`uoGXx;@nl??Ee_AKqpE@UFSyyW*Z`x%XiK@2!|0eoj2#*wD|w$M%Q) zfxv-!tr!1Y4?f^;uog9Wz50~iluK%&XA+k_3OAU2jBQGHk$dB9OZ#c}S#}@DZa&;W%_gr!^;+gDO`{fZyf9xCJn?nFk1z{0@BOnarp3$_)qSEgvtq^}g|1^9_gh`p zri4j8j_FRSxOpT{tm@*_vl-E6gQbM>!)AC3`~UGO`s?)g#(JUSt;sUtT^D25Bwvbn zci`1#*G~&|YWs|pv!zmB?_8tf`q_Q`9>;q}YQ8-!%YAmMG_!2>gP8Ysj-0a4opbxf zPCx1Ad|?-NUf$UqD`0P1C$?JXfBXE6QjOLb&mycNG$UHC^2Z79X^WMPk^R$S%2g+M z=in^02u`ux$`22=ut(l**~poEb8e@z@cbrOGrjrjHJl%$4=1X6)vGS7C@0Y%R~vD!Zo0gkSp1Yg=ux_N5f(kNgAc8O&GCoRP)M^ZixKYn7(b6?0y1_@%bh zT=HMPIuHM=s>-I%0gs)3>83mVN-kdej!){I_QgHHS9NPQt@5k=+;Qc9B!}a+2HmA% zYo%_xO~17J{+UlFw>Cy?U20Kj|CHw>ujA%(cOU!-Jz&mg&vb|9M`_5fI+j1I#qUJb z*79oRe~G+wb>pomZhsrBN|(un%`JI%SLWQ_;Qoy~(dYK5>|Ax0@6y&;cYfa}D|(y8 zeKYEDlvBvk+MxG6r=Pp`P5kDoK80B~Qp+=4_Eqxh4Q5Z|9R8NdzABa8{O#CP9_?zY z@6kt2{C)IbvB}AwT-)Y()tko_Z}j)SZK}EB_Q5OHzwS!+d0Q{@;bh0O-%mT{+z|2G zo^@LEkD1#l=}9r=2WFn$>Urqaq&emXcPxLfPW*Mkr+?Er${t^Nd`+2U@4F+-qKwru z)j8FUO?x(T*|b!l^c^9GHb-+tRn1*@A!`1$zAMiK!rFRIC;tvp7yo&s!l=Svhy9Q0 z4-OytA1qvOiRtsoi%Txgb=$iA(vELsQVaJTz9L@zrO(7J@Ml1y=$e-+MKk>@qZk)* zeN+28^Y*#7YgGJu*TsamIwXmP^ndoKDsaM z_s-M86`FRF&p#{v!L)C>yx_VOnpuXWem9mjDmK=${bHBn;o-0mk&vjcFwpqmkx=kJ z{+-Ep*6*(0Rm*o-AFjPzdu{HMf4AqpI9GbVV19Y}F8$q`?^?cF{Vx06>v#2cPQELC zCt`kn?yGY}@rBQKbKlt>W7@T2%3SBn6@7Ip4Y#h+-Ei3XZQ)D5Pv!bs58AHyw_ot! zTfRr(MYli9Iivk?Iq&oJA1nWqKB||DKfJx_QAXLVDYoJ-gkMO%5Z__{!C?Xa?g^oZ z;;g@%R)=LTxSlY5?BcU(WasNR3Odifpp7x(YKJ ziSG>R1ozM2FR$KVTcIca{@c?3f4{tc{_Sz_j}W_F|L4XU>7OQ;7i;FF=AD{~-RO@1N{{z3wkVZQQ>u*V^*p zwUhfk&fSfsspdhmYbIY>;jnV+l3Q21?z$~4x8C}oJYaXB`qqH*K+k)=y5;HDrvAG4 zWkt|i&$Xv&O|)O1{S|P!*#7l#xdlIOHedN>?^3*`{ibq`(NUYpdwrD8nXh>Jw?Q{q zJ}7?X`D+toY7XyPy04J^_Q|?r_7%@<&h!;HPD-4ZQ?aA}_{WNO=0QQTraw&oxM`1! z{(0>WDjsK9_ZaP;5dJW<()6FcUEh)yl6H;$PtJex{Bys?sJ_qseEb9bPt$+Y|2SPE zR^PhcOK91X*S`P6;!lWwJX*sU?{(>$V*EM#N7_HU_I1^t3IAL(Y5&$5+5dCu51M~E zTf^OrCE|cW1e<$qj+?PIa@%yXUK~w&}ym&sb*Z9l6 z1=oHXeb?GPuX=0r{lE6x8>@S7U)Xys_etDyv$FN&vv-*9@VzU2H|?EoUh(&|?XA__ zw=eCzn)~$Lvu$Ph<+pc~@5sIDedpD?rFp#Hjm(d(eR-`&zdU<)_>R&$+IM%ooBPA) zx}S~LL|Zkv#Z@XEQd&C;^A42WExyZ@H!1q$-UDmj#JxDSyUzTD+K$dV&Fx#FkJ+Bq zeLe5(wBpl~_kX_g`EJVgMb#Ul&#rwG_av+|bK7a1xaRnEYnr<*oe@m$^vdk=Is{yFgO0DEIwv~kem?yVETdejm(YqF{igO$FojjvE$L#L?_fg_9@-4*t%xR<11R5SIF75&03N5F#Y(7N};WKdNGer ziLA<x5lFxEE7NPVv`|E+Qvk?Zx|sdUPywK-m! zy{Sv(YNue(x~1lQOJc7wsJ_2=sgCc-UZ*8TReCJxjs);sNrQN?MFEl)Q{7P}X z)813dudH|Ze(tyLf1MTKg*&EKO|7`AAKYIQmNMUG@5$C(_RHqAR3*Q1R|}Lc>ZzMi zHK8MJ#;^YV74LsUeBE~?-{tGxM(KznR#N9~Zaq@2(rcW2Y3Yx7^ImMsPZqO!|G=y% z{kYZZXA#?23KmVewR4^Gs^<5HpB_&9d(+Zz;`?dGcb{y%7kZwv?R=WXt#GZ&>MOP8 zmMvw!FZVBM^P`QO^^ekzpJfT3JHzBTqsHH~t<&y2?0K}B*>7#|toxZqPhCGbUn%;) ze7m~~l*8Pnek=PWc|7spPtm8m`B7S|y)N^(+biW-cfvOS1^o!Ow)ErM&9>3RMd!NG zG`EhWkrp+o=e_!t8|3+|)7W=KTz&qoZJOTID=o4Y@A%2HHEv;yW_#3>#<;yPoyV7- z|LUPQ{g>VZk_JIXB>Gp&7Fq!_Lblr)7_R-niqe z+IFkXHOZdOvP9-D6kc({JG*rke|Z!|9{rrQMwnD zdsyVMkyv?r_#D**S*vfIzt*~P^M}(@D6#ko8TV8eka;aTb-TPFW-!~M7>!obi;r;l^4({FpuPmN0nLjHxYl`N3 zJu>q4nC0K=Jv(JDlV5yD?!qkL&F4Jqbf=Wwy02t@HGGS)rMYD>pKVK-|J&y}Gaj${ z%Fumpdq&^yNp?#Gt(2b{=1s0D<6c##tXOCGrfeVk4wr*U_dOS^=GnXW*@aiSz0)&f zPI4B;AAe(T;rW~1WnvjZCMr|Xjzs4eMjs2?Xqv-(`^>hDb94A_pXV#?KK_vix&U{ojC&g%z!bk6b zk2+U;<|&+g#(Ak{p2FEzoR`kbdk|sDF7WusWtRENf&z^frH9C^sGK;%;i>kTjjvKl zm-A0u|H16z-IFX+i>z;a+t>XdcHcLa+rQtbRcv3+e2{NnHOIZjuRS&>Po46ibkWY8 zn|yA}Oh}jSWv+>>iRCQ&x>V5TbE)zT-a><9g{zXb#SY6h{ zbo}_MGPy~mnBOr%>j>wUg?ATJ%_-Wg<@sgxQRSbkMOMPD#u-!)=k(yN=Nrlm&Ku5G*)kiEq8+^iJe&7am(UUSM`x%E_3cJ7vK zk-OK_UQ4{aF?RQwxhdfrvu~8XVJj2f-Fo-fyM*O8Bg^8e7ua5r%k1AA`g?-F%=a1E zFpKAlfTZ{Lsp&7r?FEaE5VLc1Ezisr31Z@E>h z-g@|!Z^iVj*R32X?4Qm!x``WKH?i!t2tO-zep{zU}o* zUQY83(znlYm@mDP>$_v>-D~e0cI=&-wOrV5vvID}@>_c~&a(@=%je(JE+m)4zujF> zF0+5*ap7}Y)o%uK`fpr*yRs$yR`HvkEzfV}-@GDptNYE;Z(N5?zrFe`>QMF@-fwA# zq~EUn#&_uU+t_b$hpONF{g!x$UG`zc%o3U7@24ouc`&6^OF-|vighSQc-bmTliOuk z8fSwJmCj}JOFq;)XPF=Op|f+t{Gt!#&iUr2^{~%x)?`nM!!MtHQJwSnOF5gM+zXz< zHetDEJtfBk~mD@4b9e_)YlUbD1wI<}Nz(xZ;Z5c?e1^Z?!@_x;^E6x3tCv-#3C(*rvp4oau`Tz8`pSjroMm$Q zpVu5(_ps)C)tm2sFKuS6F5O;PmNfls-g&z>6Ko%(X63KG{^{7t+LdwFqut(We4X}L zZDs6&dtUceWyvq!zH9rmTg@-mK3@Ai*JX#|)t%2;W>-d6-4@7uoBRB&$ByRh-R8{& zyUb6|cDA^E`@Hpp4-D@U-Wwcp-mAQ4F=zj$zR!LtHutP=TK9ekdC&7c=TPOno%dK< zo>z-kt!)3Q_f7BfI;A~_X1|a1uUPxt`@Ptq*?VvAvF3dL;oY})%6qO?A2`k-|1EN# zg<5Ug{MXvfJEp9kqu*J;8m}53dMLE!YVB5zA(1wziq@WeebWE?+L!h-Oqk!-LIHMJuImz8vYHRSTy__jJT!*F6d!; z>KQPP<*8?YTeFeWl#2^&SWg9m2#J7W4MuEJHZJI4P1VtO>>$a0$|7JM+tbW|d2FiU zQ(^*&94pzTq&rlyP2pVN!;s3PG1+k@ DvdCX5O1LiTOa%luR%w#(Cd4Uc8sm}|1 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 diff --git a/Midas-Tech.md b/Midas-Tech.md deleted file mode 100644 index 6013769..0000000 --- a/Midas-Tech.md +++ /dev/null @@ -1,168 +0,0 @@ -MIDAS TECHNOLOGIES: Executive Summary -Mission Statement: -The goal of Midas Technologies is to develop algorithmic investment software over-time to build a diversified fund of algorithmic trading strategies that yield an above market return on as frequent a basis as possible. - -Business Model: -Build an algorithmic trading Python program, that accurately predicts, and trades shares and options on the price of crude oil. This algorithm will have the goal of getting a given return with a given risk level on a weekly basis. The algorithm will not be used on the market until it has a consistent win rate of 60% and above. We will trade this based on technical indicators - -Technology Overview: -The program will be built like this: - Price Prediction Models: - Speculative Indicators: These will be functions that analyze aspects of a news article or other variable to come to a conclusion of how much the price of oil will change in a dollar value. Each indicator needs to print out a predicted price for tomorrow - Economic Indicators: These will be functions that analyze relationships between different economic factors based on data such as GDP, supply, demand, and USD. Each indicator need to print out a predicted price for tomorrow - All prices will be fed into a weighted average formula. The formula will show the predicted price at market close tomorrow. The weights represent the percentage the market thinks that particular indicator is important -PriceTomorrow= PriceNews〖(w〗_1)PriceSupply(w_2 )PriceDemand(w_3 )…. - Market Importance Ranking - Based on optimizing of the above problem to minimize margin of error, we will find the weights. These weights will be the backbone of our predictions and we -must test them continuously to find the most accurate price prediction. - - Trading Bot - - - -MIDAS TECHNOLOGIES: Roles and Responsibilities -Board of Directors: -Jacob Mardian: 1 Vote - Equity: 33.33% - Role: - Responsibilities: Business paperwork, research, learn more about trading strategies, code trading bot -Griffin Witt: 1 Vote - Equity: 33.33% - Role: Chief of - Responsibilities: Building the intrinsic evaluation system. Finding the relationships between different economic and measurable factors to determine a price -Collin Schaufele: 1 Vote - Equity: 33.33% - Role: Chief of Systems - Responsibilities: Building speculation model that finds an estimated price based on as many possible speciulative indicators as possible and get a license - - - - - - - - - - - - - - -MIDAS TECHNOLOGIES: Technology Overview -Stage 1: Architecture and Modularity - Core Architectural Design The first step is to refactor the existing code into distinct, modular components. Each component should be as independent as possible, allowing flexibility and scalability for future enhancements. -Modularization Plan: - Data Acquisition Module: Handles all API calls to get historical stock, options, and other relevant market data. - Signal Generation Module: Incorporates all technical indicators (e.g., Moving Average, RSI, Bollinger Bands, etc.) and allows plug-and-play functionality for new strategies. - Optimization Module: Responsible for finding the best combination of strategy weights using an optimization function. - Backtesting Module: Takes historical data, applies the strategy, and returns metrics like profit/loss, Sharpe ratio, and win rate. - Risk Management Module: Includes position sizing, drawdown limits, and hedging capabilities. - Execution Module: Prepares the system for live trading by handling broker API integration and managing trade execution based on generated signals. - Reporting Module: Generates detailed reports (PDF, Excel, or HTML) after backtesting or live trading sessions. - Object-Oriented Design (OOP) Each module will be encapsulated in an object, simplifying code management and enhancing scalability. -Example: Data Acquisition Class -python -Copy code -class DataAcquisition: - def __init__(self, ticker): - self.ticker = ticker - - def fetch_price_data(self, start_date, end_date): - """Fetch historical price data""" - data = yf.download(self.ticker, start=start_date, end=end_date) - return data - - def fetch_options_chain(self, expiration_date): - """Fetch options chain for the given expiration date""" - stock = yf.Ticker(self.ticker) - options_chain = stock.option_chain(expiration_date) - return options_chain -________________________________________ -Stage 2: Data Acquisition and Expansion - API Access and Data Sources At hedge-fund complexity, robust and comprehensive data is required. This includes expanding beyond Yahoo Finance: - Yahoo Finance for initial data. - IEX Cloud, Alpha Vantage, or Quandl for high-frequency data. - OptionMetrics, Quandl, or CBOE for comprehensive options data. - News Sentiment Data from NewsAPI or scrapers for financial sentiment from Twitter, Reddit, etc. - Alternative Data Sources Advanced hedge funds use alternative data: - Satellite imagery for crude oil supply insights. - Social sentiment analysis via Twitter and Reddit. - Macro data (inflation, crude oil futures, interest rates). - Data Normalization and Preprocessing Preprocessing is critical for handling missing values and ensuring consistency across different data sources. -Example of Data Preprocessing: -python -Copy code -def preprocess_data(data): - data.fillna(method='ffill', inplace=True) - data['returns'] = data['Close'].pct_change() # Calculate daily returns - return data -________________________________________ -Stage 3: Model Development and Complexity Expansion - Advanced Technical Indicators and Strategies To expand on current strategies, multiple timeframes and additional indicators should be added: - Multi-Timeframe Strategies: Daily, weekly, and monthly analysis. - Additional Indicators: MACD, Stochastic Oscillator, ADX, Ichimoku Cloud, Fibonacci Retracement, etc. - Multi-Strategy Optimization: Machine learning can be used to optimize the weight of different strategies. - Machine Learning for Signal Prediction Machine learning should be incorporated to improve signal predictions and strategy selection: - Random Forest or XGBoost: Predict buy/sell signals based on historical data. - Reinforcement Learning: To optimize decision-making based on maximizing profits. - LSTM (Long Short-Term Memory): For time-series forecasting. -Example: -python -Copy code -from sklearn.ensemble import RandomForestClassifier - -def train_model(data): - X = data[['MA', 'RSI', 'Bollinger_Bands']] # Features - y = data['buy_sell_signal'] # Target labels - model = RandomForestClassifier(n_estimators=100) - model.fit(X, y) - return model - Factor-Based Models Incorporate factor models frequently used in hedge funds: - Momentum: Track stocks with positive returns over specific periods. - Value: Use P/E ratios, EBITDA, etc., to find undervalued stocks. - Volatility: Leverage implied and historical volatility as factors for decision-making. -________________________________________ -Stage 4: Risk Management and Hedging - Advanced Risk Management Incorporating sophisticated risk management is critical: - Position Sizing: Allocate positions based on volatility and confidence levels. - Drawdown Limits: Stop trading when predefined drawdown limits are hit. - Dynamic Stop-Loss and Take-Profit: Adjust based on trailing volatility and other market conditions. - Portfolio Hedging Hedge portfolios using more advanced strategies: - Hedge Long/Short Positions: Use correlated assets (e.g., oil futures) to hedge directional bets. - Options Spreads: Implement complex options strategies (Iron Condors, Bull Call Spreads). - Beta-Hedging: Adjust based on GUSH's beta against broader market indices. -________________________________________ -Stage 5: Scalability and Live Trading Infrastructure - Execution Module Real-time trade execution and integration with broker APIs is key for scalability: - Interactive Brokers API for live trade execution. - Alpaca API for commission-free trading automation. - Execution Risk Management: Incorporate slippage and market impact analysis. - Scalable Infrastructure (Cloud-Based) Building the system on a scalable cloud infrastructure (e.g., AWS or Google Cloud) ensures high availability: - Auto-Scaling: Increase computing resources during heavy data processing or trading. - Fault Tolerance: Implement fail-safe mechanisms to handle unexpected system failures. - Advanced Monitoring and Reporting Use real-time dashboards for strategy monitoring and exploratory analysis: - Plotly Dash: Interactive dashboard for strategy performance. - Jupyter Notebooks: For in-depth analysis and rapid prototyping. - Real-Time Alerts Real-time notifications for market conditions or trading signals can be achieved via: - SMS/Email Alerts: Integrate with Twilio or SendGrid. - Webhook Integration: Slack or Telegram for team-based alerts. -________________________________________ -Step-by-Step to Hedge-Fund Level Complexity - Refactor Code into Modules: Organize code into modular components (data acquisition, strategy generation, backtesting, etc.). - Upgrade Data Sources: Use multiple sources, including alternative and real-time data for better accuracy. - Introduce Machine Learning: Use Random Forests, LSTMs, and Reinforcement Learning for better prediction of buy/sell signals. - Risk Management: Implement advanced position sizing, drawdown limits, stop-losses, and hedging strategies. - Optimize Execution: Integrate broker APIs for live trading and build a cloud-based infrastructure for scalability. - Add Hedging Capabilities: Implement multi-leg options strategies, beta-hedging, and portfolio risk management. - Monitor and Improve: Create real-time dashboards, backtest rigorously, and set up alert systems. -________________________________________ -By following this roadmap, you can evolve your trading program to hedge-fund-level complexity, adding technical sophistication, robust data acquisition, advanced machine learning, and scalable infrastructure. - - - - - - - - - diff --git a/Oil Oracle 1 TechOverview.docx b/Oil Oracle 1 TechOverview.docx deleted file mode 100644 index 929d7950da85faf4690e5e40453b6c27e1455db7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20611 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 diff --git a/docs/BusinessDocumentation/BusinessPlans/ExecutiveSummary.md b/docs/BusinessDocumentation/BusinessPlans/ExecutiveSummary.md new file mode 100644 index 0000000..fdffe6f --- /dev/null +++ b/docs/BusinessDocumentation/BusinessPlans/ExecutiveSummary.md @@ -0,0 +1,184 @@ +# MIDAS TECHNOLOGIES: Executive Summary + +--- + +## Table of Contents +1. [Mission Statement](#mission-statement) +2. [Business Model](#business-model) +3. [Technology Overview](#technology-overview) + - [Price Prediction Models](#price-prediction-models) + - [Market Importance Ranking](#market-importance-ranking) +4. [Roles and Responsibilities](#roles-and-responsibilities) +5. [Comprehensive Technology Roadmap](#comprehensive-technology-roadmap) + - [Stage 1: Architecture and Modularity](#stage-1-architecture-and-modularity) + - [Stage 2: Data Acquisition and Expansion](#stage-2-data-acquisition-and-expansion) + - [Stage 3: Model Development and Complexity Expansion](#stage-3-model-development-and-complexity-expansion) + - [Stage 4: Risk Management and Hedging](#stage-4-risk-management-and-hedging) + - [Stage 5: Scalability and Live Trading Infrastructure](#stage-5-scalability-and-live-trading-infrastructure) +6. [Implementation Pathway](#implementation-pathway) + +--- + +## Mission Statement + +The mission of **Midas Technologies** is to develop algorithmic investment software designed to continuously build a diversified portfolio of algorithmic trading strategies, delivering above-market returns on a consistent basis. + +## Business Model + +Our initial product will be an **algorithmic trading system** focused on predicting and trading the price of crude oil. This Python-based algorithm is engineered to meet specific weekly return and risk benchmarks, using a combination of technical indicators and market sentiment. + +**Core Requirements**: +- The algorithm will only be utilized for live trading once it consistently achieves a **60% win rate or higher**. +- All trades are informed by a robust analysis of technical indicators and proprietary sentiment metrics. + +## Technology Overview + +### Price Prediction Models + +1. **Speculative Indicators**: Functions that analyze speculative variables, such as news articles, and forecast oil price shifts based on sentiment. + - **Objective**: Each indicator outputs a dollar-based price prediction for the following day. + +2. **Economic Indicators**: Functions analyzing macroeconomic relationships, including GDP, supply, demand, and currency fluctuations. + - **Objective**: Each indicator provides a forecasted price for the next trading day based on economic trends. + +3. **Weighted Price Prediction Formula**: + - The model will consolidate individual indicator predictions into a weighted average to produce an overall prediction. + - Each indicator’s weight represents its market relevance, with weights optimized to minimize prediction error. + - **Formula**: + ``` + PriceTomorrow = PriceNews * (w1) + PriceSupply * (w2) + PriceDemand * (w3) + ... + ``` + - These weights, continuously refined through backtesting, are foundational to the accuracy of our predictions. + +### Market Importance Ranking + - Our system will use optimization algorithms to dynamically adjust indicator weights, ensuring accuracy and adapting to market conditions. + +--- + +## Roles and Responsibilities + +### Board of Directors + +- **Jacob Mardian** + - **Equity**: 33.33% + - **Role**: Business Operations + - **Responsibilities**: Business paperwork, research, trading strategy development, coding the trading bot. + +- **Griffin Witt** + - **Equity**: 33.33% + - **Role**: Chief of Economic Analysis + - **Responsibilities**: Building the intrinsic valuation system, identifying relationships among economic indicators to forecast oil prices. + +- **Collin Schaufele** + - **Equity**: 33.33% + - **Role**: Chief of Speculative Analysis + - **Responsibilities**: Developing models to estimate oil prices based on speculative indicators, licensing and compliance. + +--- + +## Comprehensive Technology Roadmap + +This roadmap outlines a progressive pathway for developing Midas Technologies’ trading platform, expanding from a basic algorithm to a hedge-fund-grade system. + +### Stage 1: Architecture and Modularity + +1. **Core Design**: Begin by modularizing existing code, creating independent components for scalability and flexibility. +2. **Modularization Plan**: + - **Data Acquisition Module**: API integration for historical and real-time market data. + - **Signal Generation Module**: Incorporates technical indicators (e.g., Moving Average, RSI) for easy strategy updates. + - **Optimization Module**: Finds optimal strategy weights for maximum performance. + - **Backtesting Module**: Analyzes historical data, providing profit/loss, Sharpe ratio, and win rate metrics. + - **Risk Management Module**: Manages position sizing, drawdown limits, and hedging. + - **Execution Module**: Handles broker integration and trade execution. + - **Reporting Module**: Generates detailed reports in PDF, Excel, or HTML formats post-backtesting or trading. + + **Example (Python)**: + ```python + class DataAcquisition: + def __init__(self, ticker): + self.ticker = ticker + + def fetch_price_data(self, start_date, end_date): + """Fetch historical price data""" + data = yf.download(self.ticker, start=start_date, end=end_date) + return data + ``` + +### Stage 2: Data Acquisition and Expansion + +1. **Data Sources**: + - **Yahoo Finance**: Initial data source. + - **IEX Cloud, Alpha Vantage**: High-frequency trading data. + - **Quandl, CBOE**: Options and market sentiment data. + - **Alternative Data**: Social sentiment, satellite data for supply analysis. + +2. **Data Preprocessing**: Handle missing values and normalize across data sources. + + **Example**: + ```python + def preprocess_data(data): + data.fillna(method='ffill', inplace=True) + data['returns'] = data['Close'].pct_change() + return data + ``` + +### Stage 3: Model Development and Complexity Expansion + +1. **Advanced Technical Indicators**: + - Integrate multi-timeframe analysis (daily, weekly, monthly). + - Use advanced indicators like MACD, ADX, and Fibonacci Retracement. + +2. **Machine Learning for Signal Prediction**: + - **Random Forests** and **Reinforcement Learning** to enhance signal prediction. + + **Example (Random Forest)**: + ```python + from sklearn.ensemble import RandomForestClassifier + def train_model(data): + X = data[['MA', 'RSI', 'Bollinger_Bands']] + y = data['buy_sell_signal'] + model = RandomForestClassifier(n_estimators=100) + model.fit(X, y) + return model + ``` + +### Stage 4: Risk Management and Hedging + +1. **Risk Controls**: + - Position sizing based on volatility and drawdown limits. + - Dynamic stop-loss and take-profit settings. + +2. **Hedging Strategies**: + - Long/short position hedging using oil futures. + - Options strategies like Iron Condors and Bull Call Spreads. + +### Stage 5: Scalability and Live Trading Infrastructure + +1. **Execution Module**: + - Real-time broker API integration (Interactive Brokers, Alpaca). + - Manage execution risks like slippage. + +2. **Cloud-Based Scalability**: + - Deploy on AWS or Google Cloud for scalability. + - Use auto-scaling for intensive data processing. + +3. **Advanced Monitoring**: + - Real-time dashboards using Plotly Dash. + - SMS/email alerts for key trading signals. + +--- + +## Implementation Pathway + +| Stage | Timeline | Key Tasks | +|---------------|-------------------------|-------------------------------------------------------------------------------------------------| +| Weeks 1-2 | Develop Scraper & Sentiment Analysis | Build news scraper, implement sentiment analysis models. | +| Weeks 3-4 | Confidence Scoring, Volatility Module | Add confidence scoring, build pre-market volatility prediction models. | +| Weeks 5-6 | Historical Pattern & Technical Analysis | Implement historical pattern matching, integrate technical indicators for analysis confirmation.| +| Weeks 7-8 | Trade Execution and Decision Modules | Develop modules for trade execution, options selection, and risk management. | +| Weeks 9-10 | Monitoring and Real-Time Adjustments | Real-time tracking, set up alert systems, finalize dashboards. | + +--- + +Through this phased approach, Midas Technologies will evolve its algorithmic trading platform to a sophisticated system with robust data processing, advanced modeling, and real-time trading capabilities. +``` diff --git a/docs/BusinessDocumentation/BusinessPlans/oil_oracle.md b/docs/BusinessDocumentation/BusinessPlans/oil_oracle.md new file mode 100644 index 0000000..02c6632 --- /dev/null +++ b/docs/BusinessDocumentation/BusinessPlans/oil_oracle.md @@ -0,0 +1,117 @@ +# Oil Oracle 1.0 Technology Overview + +## Table of Contents +1. [Overview](#overview) +2. [Step-by-Step Development](#step-by-step-development) + - [Step 1: News Scraper and Sentiment Analysis](#step-1-news-scraper-and-sentiment-analysis) + - [Step 2: Confidence Scoring Module](#step-2-confidence-scoring-module) + - [Step 3: Pre-Market Volatility Assessment Module](#step-3-pre-market-volatility-assessment-module) + - [Step 4: Historical Pattern Matching](#step-4-historical-pattern-matching) + - [Step 5: Technical Confirmation through Chart Analysis](#step-5-technical-confirmation-through-chart-analysis) + - [Step 6: Trade Execution Decision Module](#step-6-trade-execution-decision-module) + - [Step 7: Trade Monitoring and Exit Strategy](#step-7-trade-monitoring-and-exit-strategy) +3. [Implementation Timeline](#implementation-timeline) + +--- + +## Overview + +The **Oil Oracle 1.0** system is designed to analyze market sentiment, volatility, and technical patterns in real-time to make informed trading decisions. The following step-by-step guide outlines each module of the system, detailing how these components will work together to identify optimal trading opportunities. + +--- + +## Step-by-Step Development + +### Step 1: News Scraper and Sentiment Analysis + +**Objective**: Scrape and analyze relevant oil news to determine market sentiment at 9:29 a.m. EST daily. + +- **Source Selection**: Choose reliable oil news sources (e.g., Bloomberg, Reuters, OilPrice.com). +- **Scraping**: + - Schedule a web scraper to pull relevant articles daily. + - Include robust error handling, using proxies and custom user agents to prevent blocking. +- **Sentiment Analysis**: + - **Text Preprocessing**: Clean and standardize text data by removing HTML tags, punctuation, and irrelevant symbols. + - **NLP Model**: Use a model like BERT to determine sentiment. + - Assign -1 for positive and +1 for negative sentiment based on expected price movements. + - **Confidence Score**: Output a decimal confidence score to reflect sentiment strength (e.g., -0.8 for strong positive, +0.4 for moderate negative). +- **Backtesting**: Validate the model by testing historical oil-related news and price trends. + +### Step 2: Confidence Scoring Module + +**Objective**: Assign confidence scores to sentiment analysis predictions. + +- **Algorithm**: + - Use ensemble learning, averaging predictions across multiple NLP models. + - Factor in the reliability of news sources and historical impact on oil prices. +- **Quality Control**: + - Filter out low-confidence predictions below a threshold (e.g., 80%) to reduce false signals. + +### Step 3: Pre-Market Volatility Assessment Module + +**Objective**: Assess potential price movement based on historical patterns and pre-market data. + +- **Volatility Analysis**: + - Use volatility indicators like Average True Range (ATR) and options data for implied volatility. + - Backtest historical price reactions to similar news events. +- **Predictive Model**: + - Employ machine learning models (e.g., LSTM, XGBoost) to estimate daily volatility using news strength, previous day’s price action, and economic indicators. + - **Output**: Predict intraday price movement in percentage terms to inform profit targets and stop-loss levels. + +### Step 4: Historical Pattern Matching + +**Objective**: Validate analysis by comparing current sentiment and volatility to historical data. + +- **Pattern Matching**: + - Build a repository of similar historical news events and their impact on oil prices. + - Use clustering algorithms to match patterns and assign a correlation score. +- **Thresholds**: Set a minimum correlation requirement to validate trading signals. + +### Step 5: Technical Confirmation through Chart Analysis + +**Objective**: Align technical analysis with sentiment and volatility insights. + +- **Technical Analysis**: + - Incorporate indicators like Moving Averages, RSI, and Bollinger Bands, and analyze support/resistance levels. + - Set confirmation rules (e.g., positive sentiment aligns with a support bounce). +- **Confirmation Logic**: + - Only proceed with trades if technical indicators align with sentiment (e.g., RSI reversal confirming bullish sentiment). + +### Step 6: Trade Execution Decision Module + +**Objective**: Use combined insights to make trade decisions and select options contracts. + +- **Price Projection**: Combine sentiment, volatility, historical patterns, and technical confirmation. +- **Options Selection**: + - Assess risk and profitability using criteria like delta, theta, strike price, and expiration. +- **Risk Management**: + - Set dynamic stop-loss and take-profit levels based on volatility predictions. + +### Step 7: Trade Monitoring and Exit Strategy + +**Objective**: Monitor ongoing trades and exit based on real-time market conditions. + +- **Monitoring**: + - Track real-time sentiment, price movements, and technical indicators. + - Set alerts for mid-day sentiment changes or volatility spikes. +- **Exit Criteria**: + - Profit Target: Sell at a pre-defined profit percentage. + - Stop Loss: Exit if a maximum loss threshold is met. + - Trend Reversal: Adjust or exit positions if technical indicators show reversals. + +--- + +## Implementation Timeline + +| Week | Task | +|------|------| +| Weeks 1-2 | Develop news scraper and sentiment analysis system | +| Weeks 3-4 | Implement confidence scoring and pre-market volatility module | +| Weeks 5-6 | Develop historical pattern matching and technical confirmation modules | +| Weeks 7-8 | Build decision-making and trade execution modules | +| Weeks 9-10 | Integrate monitoring, alerts, and real-time adjustments | + +--- + +This approach will lead to a robust, modular trading system combining real-time data processing, machine learning, and strategic decision-making capabilities. + diff --git a/docs/MidasTechNologiesLLCBylaws.md b/docs/MidasTechNologiesLLCBylaws.md new file mode 100644 index 0000000..aba6833 --- /dev/null +++ b/docs/MidasTechNologiesLLCBylaws.md @@ -0,0 +1,186 @@ +The bylaws document for **Midas Technologies Inc.** has been converted into a Markdown file and enhanced for clarity and readability. Here’s the enhanced and fully structured Markdown file: + +--- + +# Bylaws of Midas Technologies Inc. +**Virginia S Corporation** + +## Table of Contents +1. [Corporate Offices](#corporate-offices) +2. [Shareholders](#shareholders) +3. [Board of Directors](#board-of-directors) +4. [Officers](#officers) +5. [Shares of Stock](#shares-of-stock) +6. [Distributions and Dividends](#distributions-and-dividends) +7. [Fiscal Year](#fiscal-year) +8. [Amendments](#amendments) +9. [Indemnification](#indemnification) +10. [Miscellaneous Provisions](#miscellaneous-provisions) +11. [Adoption of Bylaws](#adoption-of-bylaws) + +--- + +## Corporate Offices + +### Principal Office +The corporation’s principal office is located at: +**1407 Jennifer Dr, Blacksburg, Virginia** + +### Registered Office +The registered office of the corporation is maintained at the same address. Changes to the location may be made at the discretion of the Board of Directors. + +--- + +## Shareholders + +### Annual Meeting +- Held on **October 30th at 9:00 pm** at the corporation’s principal office or another location as determined by the Board. +- Purpose: **Election of directors** and transaction of other business. + +### Special Meetings +- Can be called by the **President, Board of Directors, or shareholders holding at least 30% of shares**. +- May be held virtually if necessary. + +### Notice of Meetings +Written notice, specifying location, date, and time, will be sent to each shareholder at least **seven days** before the meeting date. + +### Quorum and Voting +- A **quorum** requires **50% plus one** of the voting shares. +- Decisions require a **majority vote** of the shareholders present, unless otherwise stated by law or these bylaws. + +### Proxies +Shareholders may vote by **proxy**, which must be in writing and signed by the shareholder or their authorized representative. + +--- + +## Board of Directors + +### General Powers +The Board of Directors is responsible for managing the **business and affairs** of the corporation. + +### Structure and Tenure +- **Three directors** on the Board, elected at the annual shareholders’ meeting. +- Directors serve until the next annual meeting or until their successors are elected. + +### Meetings +- **Regular Meetings**: No notice is required; times and places are determined by the Board. +- **Special Meetings**: May be called by the President or directors, with at least **seven days’ notice**. + +### Quorum and Decision-Making +A **majority of directors** is required for a quorum, and a majority vote is needed for decisions unless otherwise specified. + +### Compensation +Directors may receive **reasonable compensation** for their services, aligned with market rates. + +### Shareholder Agreement +**Substantial changes**, such as a sale of the company, require **unanimous consent** from both the Board and shareholders to protect founders’ interests. + +--- + +## Officers + +### Corporate Officers and Responsibilities +1. **Chief Data Officer (CDO)** + - Oversees data management, analysis, and research for trading algorithms. + - **Duties**: + - Lead data collection and interpretation for strategic insights. + - Collaborate with the CTO to integrate data streams. + - Conduct market trend research and model evaluations. + - Ensure data security, compliance, and accuracy. + +2. **Chief Technical Officer (CTO)** + - Manages technological infrastructure and software development for trading programs. + - **Duties**: + - Lead software platform development and maintenance. + - Manage technical infrastructure, including API integrations. + - Collaborate on data-driven strategy with the CDO. + - Implement cybersecurity measures. + +3. **Chief Operations Officer (COO)** + - Oversees operations, compliance, and investment strategy. + - **Duties**: + - Manage administrative, financial, and regulatory aspects. + - Ensure regulatory compliance. + - Oversee company-wide policies and procedures. + - Coordinate with CTO and CDO to align technical and data initiatives. + +### Collaboration +The CDO, CTO, and COO collaborate on major initiatives, requiring **consensus** on decisions affecting the company’s direction or strategic assets. + +### Election and Term +Officers are elected by the Board at the annual meeting and serve a **one-year term** or until successors are elected. + +### Removal and Vacancies +Officers may be removed by a majority vote if deemed necessary, and any vacancies are filled by the Board. + +--- + +## Shares of Stock + +### Issuance of Shares +The Board has the authority to **issue shares** and set terms for stock issuance. + +### Stock Certificates +Shares can be represented by **certificates or electronically**. Certificates display the corporation’s name, shareholder’s name, and number of shares. + +### Transfer of Shares +Shareholders can transfer shares on the corporation’s books with proper authorization. + +### Restrictions on Transfer +To maintain S Corporation status, any share transfer must first be offered to the corporation or other shareholders before outside parties. + +--- + +## Distributions and Dividends + +### Distributions +The Board of Directors determines shareholder distributions, following state and federal regulations. + +### Dividends +Dividends may be declared at the Board’s discretion, adhering to S Corporation rules and the corporation’s financial status. + +--- + +## Fiscal Year + +The corporation’s fiscal year aligns with the **calendar year**, subject to change by the Board of Directors. + +--- + +## Amendments + +The bylaws can be **amended or repealed** by either the Board of Directors or shareholders during regular or special meetings. Amendments require a **majority vote**. + +--- + +## Indemnification + +Directors, officers, and agents of the corporation are indemnified against liabilities incurred in performing their duties, as permitted by **Virginia law**. + +--- + +## Miscellaneous Provisions + +1. **Corporate Records**: Records of corporate activities are maintained at the principal office. +2. **Corporate Seal**: A corporate seal may be adopted, though not required for document validity. +3. **Right of Inspection**: Shareholders have the right to inspect records with prior written request. +4. **Intellectual Property**: Proprietary algorithms, data models, and software developed for the corporation belong to the corporation. +5. **Conflict Resolution**: The corporation seeks mediation or arbitration before litigation in case of internal disputes. + +--- + +## Adoption of Bylaws + +These bylaws were adopted by the Board of Directors of **Midas Technologies Inc.** on **November 11, 2024**. + +--- + +**Signatures:** + +Chief Operations Officer +Chief Technical Officer +Chief Data Officer + +--- + +This enhanced version provides clear formatting and structure for readability and accessibility. Let me know if you need further adjustments or additional files processed! diff --git a/docs/PoliciesAndStandards/CodingStandards.md b/docs/PoliciesAndStandards/CodingStandards.md new file mode 100644 index 0000000..125968b --- /dev/null +++ b/docs/PoliciesAndStandards/CodingStandards.md @@ -0,0 +1,245 @@ +# MiadTechnologies Coding Standards + +This document details the coding standards and practices for maintaining consistency, readability, and quality in the codebase for all contributors. These guidelines apply across programming languages and environments used within the project, focusing primarily on Python and any related languages used for interoperability. + +--- + +## Table of Contents +1. [Python Coding Standards](#python-coding-standards) +2. [Virtual Environments and Dependency Management](#virtual-environments-and-dependency-management) +3. [Interfacing with Other Languages](#interfacing-with-other-languages) +4. [Documentation Standards for Code](#documentation-standards-for-code) + +--- + +## Python Coding Standards + +Our primary codebase is in Python, and we adhere strictly to **PEP8** guidelines with additional standards to ensure clarity and consistency. + +### PEP8 Guidelines and Best Practices +- **Naming Conventions**: + - **Variables and functions**: Use `snake_case` for readability. + - **Classes**: Use `PascalCase`. + - **Constants**: Use `ALL_CAPS`. +- **Line Length**: Limit lines to **79 characters** for readability. +- **Indentation**: Use **4 spaces per indentation level**. +- **Docstrings**: Follow [PEP 257](https://www.python.org/dev/peps/pep-0257/) conventions. + - Use docstrings for all public modules, classes, and functions. + - Structure them using the [Google docstring style](https://sphinxcontrib-napoleon.readthedocs.io/en/latest/example_google.html). +- **Comments**: Add comments as needed to clarify code functionality, especially around complex logic. Avoid redundant comments. + +### Jupyter Notebook Usage +While Jupyter notebooks are valuable for experimentation, they should not be submitted directly to the repository unless absolutely necessary. Instead: +1. **Convert the notebook to a `.py` file** before adding it to the repo. + - In Jupyter, navigate to `File > Download as > Python (.py)` to obtain a `.py` version of the notebook. +2. **Document the Python file** properly and integrate it with the existing codebase standards. + +### Python Best Practices Quick Reference + +Follow these essential Python best practices to ensure code consistency across the project: + +- **Use List Comprehensions**: Prefer list comprehensions over traditional loops for concise code. + ```python + # Recommended + squares = [x**2 for x in range(10)] +``` +* Avoid Global Variables: Limit the use of global variables, especially in modules intended for import. + +* String Formatting: Use f-strings (formatted string literals) for improved readability in Python 3.6 and above. + +```python + name = "Alice" + print(f"Hello, {name}!") +``` + + * Error Handling: Use specific exceptions where possible. Avoid catching all exceptions with except Exception. + + * PEP8 Line Length: Adhere to a line length of 79 characters, and use 4 spaces per indentation level. + + * Docstrings: Use Google-style docstrings to document functions, modules, and classes. + +>Refer to PEP8 and Google Python Style Guide for detailed information on Python coding standards. + +### Recommended Tools +- **Flake8**: Enforces PEP8 standards. +- **Black**: Automatic formatter for consistent styling. +- **isort**: Automatically organizes imports. + +These tools can be added to your development environment for smoother compliance with coding standards. + +--- + +## Virtual Environments and Dependency Management + +Using a virtual environment isolates dependencies and keeps the project environment consistent. + +### Setting Up a Virtual Environment +1. **Create the virtual environment** in the project root: + ```bash + python -m venv venv + ``` +2. **Activate the environment**: + - On macOS/Linux: + ```bash + source venv/bin/activate + ``` + - On Windows: + ```bash + .\venv\Scripts\activate + ``` +3. **Install dependencies** from `requirements.txt`: + ```bash + pip install -r requirements.txt + ``` + +### Managing Dependencies with `requirements.txt` +All project dependencies should be added to `requirements.txt`. When new packages are added: +1. Install the package using `pip`. +2. Update `requirements.txt` by freezing the environment: + ```bash + pip freeze > requirements.txt + ``` + +### Important Note +- **Do not push the `venv` directory** to the repository. The virtual environment is a local development tool and should remain excluded in `.gitignore`. + +--- + +Here's a more detailed and enhanced section for the **Interfacing with Other Languages** area, incorporating standards and industry best practices across each language, file format, and tool. + +--- + +## Interfacing with Other Languages + +Python’s flexibility allows it to integrate with other languages, databases, and formats, which is particularly beneficial for high-performance tasks, front-end functionality, data exchange, and efficient file handling. Below are the industry standards, best practices, and interfacing guidelines for each language or format commonly used with Python. + +### 1. C (CPython and C Extensions) +C is often used in Python projects for performance-critical modules and low-level operations. +- **Coding Standards**: Follow the [GNU Coding Standards](https://www.gnu.org/prep/standards/). + - Use `snake_case` for variable and function names. + - Avoid global variables, and encapsulate functions within modules. +- **Documentation**: Use comments within `.c` and `.h` files, explaining complex logic and including a description of each function. + - Follow structured comment headers for each function, detailing parameters, expected return values, and purpose. +- **Interfacing with Python**: + - Use `ctypes` or `cffi` for interfacing. + - **Example**: Use `ctypes` to call a C function from Python: + ```c + // function.c + int add(int a, int b) { + return a + b; + } + ``` + - Use `setup.py` with `distutils` to compile C extensions for easy distribution. + +### 2. TypeScript and JavaScript +TypeScript, a typed superset of JavaScript, should be used for type safety and maintainability on the front-end. +- **Coding Standards**: Follow the [Airbnb JavaScript Style Guide](https://github.com/airbnb/javascript). + - Use `camelCase` for variables and function names. + - Prefer `const` and `let` over `var`. +- **Documentation**: Comment functions and classes with JSDoc. + - Use TypeScript's type annotations to document data types explicitly. +- **Interfacing**: + - Use `pyodide` or REST APIs to communicate between Python and JavaScript. + - When possible, separate concerns by keeping Python back-end tasks independent of TypeScript front-end logic, communicating only through defined APIs. + +### 3. Go +Go is efficient for concurrent tasks, and is often used alongside Python for backend services or tasks needing efficient multithreading. +- **Coding Standards**: Follow [Effective Go](https://golang.org/doc/effective_go.html). + - Use `PascalCase` for exported (public) identifiers and `camelCase` for private ones. + - Format code with `go fmt` to maintain consistency. +- **Documentation**: + - Add a comment above each function explaining its functionality, parameters, and expected return values. +- **Interfacing**: + - Use `cgo` to call C functions from Go if needed, or implement a REST API to interact with Python. + +### 4. Rust +Rust is a high-performance language with strong memory safety guarantees, making it suitable for secure, efficient modules in Python. +- **Standards**: Follow the [Rust API Guidelines](https://rust-lang.github.io/api-guidelines/). + - Use `snake_case` for function and variable names, and `CamelCase` for structs and enums. + - Use `clippy` for linting and `rustfmt` for consistent formatting. +- **Documentation**: + - Use triple slashes (`///`) for documentation comments on functions and modules. + - Each public function should explain parameters, return values, and potential errors. +- **Interfacing**: + - Use `pyo3` for embedding Rust code in Python or `maturin` for building and publishing Python packages containing Rust code. + +### 5. JSON +JSON is a lightweight data-interchange format and is frequently used in Python projects for configuration and data exchange. +- **Format**: Follow strict schema validation to ensure data consistency. + - Use lowercase keys in `snake_case`. + - Avoid deeply nested structures; keep depth manageable for readability. +- **Best Practices**: + - Validate JSON against a schema using tools like `jsonschema`. + - Use consistent encoding (UTF-8) and 4-space indentation. + +### 6. CSV +CSV files are widely used for tabular data storage and exchange. +- **Format**: Always include headers as the first row, and use commas (`,`) as delimiters. +- **Best Practices**: + - Handle missing data by filling with placeholders or removing empty rows if appropriate. + - Use Python’s `csv` library, and include headers in the file for clarity. + - Ensure data types are consistent across columns (e.g., dates, numbers). + +### 7. SQL (Database Standards) +SQL databases are essential for structured data storage and querying. +- **Naming Conventions**: + - Use `snake_case` for table and column names. + - Avoid special characters and reserved keywords in table or column names. +- **Standards**: Follow [SQL Style Guide](https://www.sqlstyle.guide/). + - Use constraints and foreign keys for data integrity. + - Normalize data as needed, but consider denormalization for performance in specific cases. +- **Indexing**: Index frequently queried columns for faster retrieval. +- **Transactions**: Wrap changes in transactions to ensure data consistency, and roll back on errors. + +### 8. Docker +Docker standardizes development environments and deployment by containerizing applications. +- **Dockerfile Standards**: + - Use multi-stage builds to optimize image size. + - Only include production dependencies in the final image. + - Use environment variables for configuration rather than hardcoding values. +- **Directory Structure**: + - Place Docker-related files in a `docker/` directory. + - Use `docker-compose.yml` for multi-container setups. +- **Best Practices**: + - Use `.dockerignore` to exclude unnecessary files, like logs and local configuration. + - Always use stable tags for dependencies instead of `latest`. + +### 9. Binary Building for Python +For performance-critical Python code, consider building binaries. +- **Tools**: + - Use `Cython` to compile Python code into C, then build as a binary. + - Alternatively, use `PyInstaller` to package Python scripts as standalone executables. +- **Best Practices**: + - Ensure binaries are compatible with target deployment environments. + - Document the binary build process for reproducibility. + +### 10. Makefiles +**Makefiles** provide a standardized way to compile and manage dependencies, particularly for non-Python code. +- **Structure**: + - Place the `Makefile` in the root of the project. + - Organize commands for easy readability, grouping related commands together. +- **Common Targets**: + - `build`: Compile code, if needed. + - `clean`: Remove compiled files and dependencies. + - `test`: Run test suites. + - `install`: Set up dependencies or environment configurations. + +--- + +## Documentation Standards for Code + +Clear and concise documentation is essential for long-term project maintainability. + +### Docstring and In-Code Documentation +- **Functions and Classes**: Use [Google Style Docstrings](https://sphinxcontrib-napoleon.readthedocs.io/en/latest/example_google.html). + - Each docstring should describe what the function does, input parameters, return values, and any exceptions raised. +- **In-Line Comments**: Only add comments where needed to explain non-obvious parts of the code. +- **Module-Level Documentation**: Provide a brief overview at the top of each file explaining its purpose and any key dependencies. + +### README.md for Each Module +Each root module should contain a `README.md` file covering: +- **Overview**: High-level description of the module’s functionality. +- **Setup**: Dependencies, pip installs, libraries, and setup instructions. +- **Usage**: Sample commands or code for running the module. +- **API Documentation**: If applicable, list available functions, classes, or endpoints. + diff --git a/docs/PoliciesAndStandards/CommunicationStandards.md b/docs/PoliciesAndStandards/CommunicationStandards.md new file mode 100644 index 0000000..5f98e3d --- /dev/null +++ b/docs/PoliciesAndStandards/CommunicationStandards.md @@ -0,0 +1,125 @@ +# Collaboration and Communication + +## Table of Contents +1. [Purpose](#purpose) +2. [Communication Channels](#communication-channels) + - [GitHub Issues](#github-issues) + - [Pull Requests (PRs)](#pull-requests-prs) + - [Team Meetings](#team-meetings) + - [Direct Messaging (DMs)](#direct-messaging-dms) +3. [Collaborative Coding Practices](#collaborative-coding-practices) +4. [Documentation Requirements](#documentation-requirements) +5. [Conflict Resolution](#conflict-resolution) +6. [File-Path Standards and Naming Conventions](#file-path-standards-and-naming-conventions) +7. [Labor Distribution and Task Assignment](#labor-distribution-and-task-assignment) + +--- + +## Purpose + +This document outlines collaboration and communication guidelines for our team, ensuring alignment, productivity, and clarity as we work on projects. Effective use of these practices will help streamline progress and minimize misunderstandings. + +--- + +## Communication Channels + +1. **GitHub Issues** + - **Purpose**: Use GitHub Issues for bug tracking, feature requests, and all development-related discussions. + - **Best Practices**: + - Assign labels (e.g., `bug`, `enhancement`, `documentation`) to categorize each issue. + - Assign issues to relevant team members and add milestones where applicable. + - Keep all discussions regarding the issue within its thread to retain context. + +2. **Pull Requests (PRs)** + - **Purpose**: PRs facilitate code reviews and collaborative discussions on changes before merging. + - **Best Practices**: + - Link each PR to the corresponding issue. + - Use the provided **PR Template** to give detailed context and link to relevant resources. + - Use **GitHub Reviews** to comment on specific code sections or suggest improvements. + - Ensure all discussions are resolved before finalizing the merge. + +3. **Team Meetings** + - **Purpose**: Conduct periodic meetings to discuss project updates, roadblocks, and future priorities. + - **Frequency**: Weekly, or as needed based on project milestones. + - **Agenda**: Each member should come prepared with updates, questions, and any roadblocks requiring group input. + +4. **Direct Messaging (DMs)** + - **Purpose**: Use text messaging for quick, urgent issues. + - **Future Option**: A company Discord or similar platform may be established for more structured and real-time communication, enabling different channels for topics like bugs, general updates, and discussions. + - **Note**: Text messaging or direct messages are meant for time-sensitive issues and should not replace documented discussions crucial to the project. + +--- + +## Collaborative Coding Practices + +1. **Code Reviews** + - Open a PR for any code that is ready for review. + - Assign relevant team members as reviewers, tagging specific people for feedback on particular areas. + - Provide constructive feedback with explanations to clarify your suggestions. + +2. **Issue Assignment and Management** + - Assign each issue to one or more contributors. + - Regularly update the issue status by changing labels or closing it when complete. + - For large tasks, break down the issue into smaller, manageable sub-tasks and assign them accordingly. + +3. **Pair Programming and Knowledge Sharing** + - For complex features or debugging, consider pair programming with another team member. + - Document insights gained from these sessions, especially any solutions for particularly challenging issues or bugs. + +### Task Ownership and Assignment Changes + +To ensure transparency and accountability within the team, follow these guidelines for task ownership: + +- **Task Ownership**: Each issue should have a clearly assigned owner responsible for its completion. If you are assigned a task, regularly update the issue with your progress. +- **Reassignment Protocol**: If you are unable to complete a task or require assistance, reassign it to a relevant team member or reach out to the project maintainer. +- **Ownership Transfer**: When transferring ownership, add a comment to the GitHub issue explaining the reason and notify the new owner directly. Ensure the transition is smooth to maintain workflow continuity. + +Maintaining clear task ownership helps keep the project organized and reduces overlap or duplicated effort. + +--- + +## Documentation Requirements + +- Each project module should contain a `README.md` with setup instructions, usage examples, and module-specific details. +- Follow **Documentation Standards.md** for consistency in all documentation. +- Comment complex or non-obvious code to enhance clarity for all team members. + +--- + +## Conflict Resolution + +1. **Technical Disagreements** + - Address technical disagreements within the PR or issue thread. + - If unresolved, escalate to a team meeting where a consensus can be reached. + +2. **Responsibilities and Expectations** + - Document each team member’s responsibilities and ensure clarity on roles to prevent misunderstandings. + - If conflicts arise regarding tasks, discuss openly in team meetings or escalate to the project maintainer. + +--- + +## File-Path Standards and Naming Conventions + +- Adhere to the **File-Path Standards** for directory structures and file naming conventions. +- Following consistent naming conventions helps streamline navigation and allows the team to understand the project structure quickly. + +--- + +## Labor Distribution and Task Assignment + +**GitHub Project Boards and Issues** provide a structured method for distributing tasks across the team: +1. **Create Project Boards** + - **Purpose**: Use GitHub Project Boards to organize issues into columns such as `To Do`, `In Progress`, and `Completed`. + - **Best Practices**: + - Ensure each task or issue is visible on the board. + - Regularly update the status of each issue by moving it to the relevant column as work progresses. + +2. **Assigning Issues and Tasks** + - For each feature or task, create an issue in GitHub and assign it to the responsible contributor. + - Use tags like `priority`, `in-progress`, and `review-needed` for clarity on the status and urgency of each task. + +3. **Milestones** + - Define **milestones** for specific project phases (e.g., `v1.0 Launch`, `Feature Complete`). + - Assign issues to milestones to maintain a timeline and prioritize critical tasks. + - Each milestone should have an estimated completion date and a list of issues to be resolved before the milestone is considered complete. + diff --git a/docs/PoliciesAndStandards/DocumentationStandards.md b/docs/PoliciesAndStandards/DocumentationStandards.md new file mode 100644 index 0000000..0bbe40b --- /dev/null +++ b/docs/PoliciesAndStandards/DocumentationStandards.md @@ -0,0 +1,170 @@ +# Documentation Standards + +## Table of Contents +1. [Overview](#overview) +2. [Global Documentation Structure](#global-documentation-structure) +3. [Module-Specific Documentation](#module-specific-documentation) +4. [Documentation Format and Naming Conventions](#documentation-format-and-naming-conventions) +5. [File Requirements for Python Modules](#file-requirements-for-python-modules) +6. [Code Documentation Practices](#code-documentation-practices) + +--- + +## Overview + +This document defines the standards for documenting business, technical, and code-related affairs within the repository. It ensures that all contributors understand how and where to document essential aspects of the project, including code structure, usage, and business elements. + +**Footnote:** While the overarching program is under active development, documentation must be updated with each pull request or addition to maintain consistency and clarity as the project grows. + +--- + +## Global Documentation Structure + +All global documentation is stored under the `/docs` directory and is organized into the following key areas: + +1. **Business Documentation**: + - Contains non-technical documents that relate to company operations, legal compliance, project plans, business strategies, and any necessary licenses or contracts. + - **Directory**: `/docs/business` + - **Examples**: Business plans, contracts, project outlines, licenses. + +2. **Policies and Standards**: + - Contains files outlining the coding, review, and workflow standards. + - **Directory**: `/docs/policies-and-standards` + - **Examples**: `GitAndGitHubStandards.md`, `BranchNamingConventions.md`, `CodingStandards.md`. + +3. **Man Pages**: + - Stores all program-related documentation for the entire codebase. + - **Directory**: `/docs/manpages` + - **Examples**: README files detailing how to use, deploy, and modify the overarching program. + +Each sub-directory should contain a README.md that outlines its purpose and lists the contents within. + +--- + +## Module-Specific Documentation + +All **root modules** within the overarching program should contain their own `README.md` files. These files should act as module-specific documentation, providing: + +1. **Overview**: + - A brief explanation of the module’s functionality and its purpose in the larger program. + +2. **Installation and Setup**: + - Instructions for setting up the module, including any dependencies not covered in the global requirements file. + +3. **Usage**: + - How to run and utilize the module, including examples of inputs, expected outputs, and special configurations. + +4. **Development Guidelines**: + - If applicable, detail any specific guidelines for contributing to the module, such as coding standards, testing guidelines, or branch usage specific to the module. + +5. **Version and Dependencies**: + - Each module should have its own `requirements.txt` file that lists the dependencies required for it to function. This file will be merged into the main program’s `requirements.txt` by the admins. + +--- + +## Documentation Format and Naming Conventions + +### Format + +- **Markdown** (`.md`) or **Plain Text** (`.txt`) formats are acceptable for all documentation. +- The language should be formal yet accessible, avoiding technical jargon where possible to ensure clarity for all team members and future collaborators. + +### Naming Conventions + +- **Documentation files** must be in **Capitalized Case** with no spaces, using only letters and alphanumeric characters. + - **Examples**: `DocumentationStandards.md`, `GitAndGitHubStandards.md` +- **Code files** should follow **lowercase with underscores** for Python, with no spaces or special characters. + - **Examples**: `data_processing.py`, `config_handler.py` + +--- + +## File Requirements for Python Modules + +### Main `requirements.txt` + +A main `requirements.txt` file will exist in the root directory of the program. This file aggregates all module-specific dependencies to provide a comprehensive list of requirements for the entire program. + +### Module-Specific `requirements.txt` + +- Each root module in Python must include its own `requirements.txt` file, specifying only the dependencies necessary for that module. +- Upon review, the admins will incorporate module-specific requirements into the main `requirements.txt`. + +--- + +## Code Documentation Practices + +### General Code Documentation Guidelines + +Documentation within code should provide clarity and context without redundancy. Focus on documenting the **why** and **how** rather than the **what**. + +- **Functions and Methods**: + - Include docstrings for all public functions and methods. These should follow the [Google Docstring Style](https://sphinxcontrib-napoleon.readthedocs.io/en/latest/example_google.html) for consistency and readability. + +- **Classes**: + - Each class should have a docstring explaining its purpose and any unique attributes or methods. This docstring should summarize the role of the class in the module. + +### Specific Documentation Guidelines + +1. **Function-Level Documentation**: + - Include a brief docstring at the beginning of each function that explains: + - **Parameters**: List and explain the function’s input parameters. + - **Returns**: Describe the data returned by the function. + - **Raises**: Detail any exceptions that the function might raise. + - **Example**: + ```python + def process_data(data: list) -> dict: + """ + Processes input data and returns a dictionary of results. + + Args: + data (list): List of data points to be processed. + + Returns: + dict: Processed results including mean and standard deviation. + + Raises: + ValueError: If data is not a list of numbers. + """ + ``` + +2. **Class-Level Documentation**: + - Use class-level docstrings to summarize the purpose and usage of the class. + - **Example**: + ```python + class DataProcessor: + """ + Class for processing and analyzing data. + + This class provides methods for statistical analysis and + data transformation. Suitable for numerical data inputs. + + Attributes: + data (list): List of numerical data. + """ + ``` + +3. **In-Line Comments**: + - Use in-line comments sparingly and only to clarify complex logic or non-standard decisions in the code. + - Avoid obvious comments; instead, focus on why something is done rather than what is being done. + +### API Documentation Standards + +For code that interfaces with external services or shared modules, follow these standards for documenting APIs: + +- **Endpoints**: Clearly list each endpoint and its purpose in the API documentation. +- **Parameters**: Define all required and optional parameters, including data types and default values. +- **Response Format**: Describe the structure and data types returned by each endpoint. +- **Error Handling**: Document possible error codes or messages and recommended solutions for common issues. +- **Usage Examples**: Provide examples showing both requests and responses to illustrate expected usage. + +API documentation should be added to the `docs/ManPages/api` directory. Where possible, maintain consistency with other project documentation. + +### Documentation Updates with Pull Requests + +Whenever a pull request (PR) introduces new features, refactors existing code, or modifies functionality, relevant documentation files must be updated accordingly. Contributors are responsible for ensuring that: + +- All impacted `README.md` files, both module-specific and global, reflect the latest changes. +- Necessary updates to docstrings, function comments, and inline comments are made to maintain clarity and usability. + +*Footnote: This process is currently noted for future enforcement once the overarching program is complete.* + diff --git a/docs/PoliciesAndStandards/FilePathStandards.md b/docs/PoliciesAndStandards/FilePathStandards.md new file mode 100644 index 0000000..560f418 --- /dev/null +++ b/docs/PoliciesAndStandards/FilePathStandards.md @@ -0,0 +1,176 @@ +# File Path Standards + +## Table of Contents +1. [Purpose](#purpose) +2. [General Directory Structure](#general-directory-structure) +3. [Naming Conventions](#naming-conventions) +4. [Special Conventions](#special-conventions) +5. [Example Directory Structure](#example-directory-structure) +6. [Guidelines for Adding New Files](#guidelines-for-adding-new-files) + +--- + +## Purpose + +This document establishes the standards for organizing, naming, and structuring files and directories across all projects within **MidasTechnologies**. Following these guidelines ensures a clean, predictable file layout, making it easy for team members to navigate, understand, and maintain the repository. Clear structure contributes to project scalability, maintainability, and a smoother development experience. + +--- + +## General Directory Structure + +The project root directory, **MidasTechnologies**, includes key folders for code, tests, configuration, documentation, and other resources. The layout below provides an organized structure for optimal project navigation and resource management. + +``` +MidasTechnologies/ +│ +├── src/ # Source code for the entire project +│ ├── neural-network/ # Neural network-related code +│ ├── data-collection/ # Code and data processing tools for data collection +│ │ ├── tests/ # Contains unit tests, integration tests, and test resources +│ │ └── ... # Additional data collection code modules +│ ├── sentiment-analysis/ # Sentiment analysis-related code +│ ├── frontend/ # Frontend-related code and assets +│ └── ... # Additional modules or features as needed +│ +├── docs/ # All project documentation +│ ├── BusinessDocumentation/ # Business-related documentation +│ ├── ManPages/ # Global code documentation +│ └── PoliciesAndStandards/ # Documentation standards, policies, and guidelines +│ +├── config/ # Configuration files and environment settings +├── data/ # Static data files for the entire project +├── scripts/ # Utility and setup scripts (e.g., deployment scripts) +├── examples/ # Examples and sample code for demonstrating project usage +└── assets/ # Static assets (images, icons, etc.) for frontend or docs +``` + +--- + +## Naming Conventions + +1. **File Names** + - All file names should be in **lowercase** and use **underscores** to replace spaces (e.g., `data_loader.py`). + - Avoid any whitespace, special characters, or symbols. Stick to letters, numbers, and underscores. + - If a file is specific to a particular module or feature, use a descriptive prefix or suffix to clarify its purpose, such as `user_model.py`. + +2. **Directory Names** + - Directory names should be in **all lowercase** and use hyphens (`-`) to replace spaces (e.g., `user-auth`). + - Avoid whitespace and special characters to maintain consistency. + - **src/ Directories**: Organize files by functionality, such as `api`, `models`, `services`, `data-collection`, and `utils`. + +3. **Document Files** + - **Documentation** should be in **Markdown (.md)** or **Plain Text (.txt)** format. + - Documentation filenames should follow a capitalized naming convention (e.g., `README.md` or `GitAndGithubStandards.md`). + +4. **Environment Variables** + - Use **all uppercase** with underscores (e.g., `DATABASE_URL`). + +5. **Configuration Files** + - Use `.yaml` or `.json` for configuration files to maintain readability and consistency. + +6. **Classes** + - Class names should follow **PascalCase** (e.g., `UserService`). + +### GitHub File Naming and Directory Limitations + +When creating or modifying file names and directories, keep in mind GitHub's limitations and best practices: + +- **Character Limit**: File and directory names should not exceed 255 characters. +- **Special Characters**: Avoid using special characters (e.g., `@`, `!`, `$`, `%`) as they may cause compatibility issues across different operating systems. +- **Case Sensitivity**: GitHub is case-sensitive, so `FilePathStandards.md` and `filepathstandards.md` are treated as distinct files. Use consistent lowercase naming for all files as per our standards. +- **Path Depth**: Aim to keep directory nesting shallow to improve readability and reduce navigation complexity. + +Adhering to these guidelines will ensure compatibility across different development environments and maintain uniformity within the repository. + +--- + +## Special Conventions + +1. **Documentation Directories** + - Documentation directories in `docs/` are an exception to general naming conventions. Documentation files use **Capitalized Names** (e.g., `ManPages`, `BusinessDocumentation`). + +2. **README Files** + - Each root module in the project should contain its own `README` file, which provides context and instructions for the specific module. + - The `README` file must be in Markdown (`README.md`), Plain Text (`README.txt`), or have no extension (simply `README`). + - **Global documentation** for the entire project is held in the `docs/ManPages` directory. + +3. **Test Directories** + - All root modules should contain a `tests` directory, located one level deep within the main module folder (e.g., `src/data-collection/tests`). This folder will house unit tests, integration tests, and other test resources relevant to the module. + +4. **Data Directories** + - A `data/` directory in the project root holds static data files used across the entire project. + - If a `data/` directory exists within a `src` module, it may have specific functionality. Refer to the module’s `README` file for further clarification. + +--- + +## Example Directory Structure + +``` +MidasTechnologies/ +│ +├── src/ +│ ├── neural-network/ +│ │ ├── models.py # Neural network models +│ │ ├── training_script.py # Training scripts +│ │ └── ... +│ │ +│ ├── data-collection/ +│ │ ├── data_sources.py # Sources for data collection +│ │ ├── process_data.py # Data processing scripts +│ │ ├── tests/ # Contains unit tests, integration tests, and test resources +│ │ └── ... +│ │ +│ ├── sentiment-analysis/ +│ │ ├── analyze_sentiment.py # Sentiment analysis script +│ │ └── ... +│ │ +│ ├── frontend/ +│ │ ├── app.js # Frontend application code +│ │ └── ... +│ │ +│ └── ... +│ +├── docs/ +│ ├── README.md # Project overview documentation +│ ├── BusinessDocumentation/ # Legal and business-related documentation +│ ├── ManPages/ # Global code documentation +│ └── PoliciesAndStandards/ # Markdown files on standards, policies, and guidelines +│ +├── config/ +│ ├── config.yaml # Main project configuration file +│ └── dev_config.yaml # Development-specific configuration +│ +├── data/ +│ └── sample_data.csv # Static data file example +│ +├── scripts/ +│ ├── setup.sh # Script to initialize the project setup +│ └── deploy.sh # Deployment script +│ +├── examples/ +│ ├── usage_example.py # Example usage of main project features +│ └── ... +│ +└── assets/ + ├── logo.png # Project logo + └── favicon.ico # Icon for frontend +``` + +--- + +## Guidelines for Adding New Files + +1. **Check the Existing Structure** + - Review the current directory structure before adding a new file to ensure you place it in the most relevant folder. + - Avoid creating redundant or deeply nested directories without a strong rationale. + +2. **Follow Naming Conventions** + - Ensure that all files and directories follow the naming conventions specified above, keeping the structure consistent and predictable. + +3. **Document New Directories** + - When adding a new folder that doesn’t fit existing patterns, include a `README.md` file or entry in the main project documentation within `docs/` to explain its purpose. + +4. **Requirements for Documentation** + - All documentation files should be placed in the appropriate subdirectory within `docs/`. + - Markdown or text files should be used for documentation purposes, avoiding other file formats where possible. + diff --git a/docs/PoliciesAndStandards/GitAndGithubStandards.md b/docs/PoliciesAndStandards/GitAndGithubStandards.md new file mode 100644 index 0000000..741786f --- /dev/null +++ b/docs/PoliciesAndStandards/GitAndGithubStandards.md @@ -0,0 +1,846 @@ +[#](#) Git and GitHub Standards + +## Table of Contents + +1. [Overview](#overview) +2. [Understanding Git and GitHub](#understanding-git-and-github) +3. [Branching Strategy](#branching-strategy) +4. [Branch Naming Conventions](#branch-naming-conventions) +5. [Commit Message Standards](#commit-message-standards) +6. [Code Review Policy](#code-review-policy) +7. [Best Practices for Using Git](#best-practices-for-using-git) +8. [Working with Pull Requests](#working-with-pull-requests) +9. [File-Path Standards](#file-path-standards) + +--- + +## Overview + +This document provides a comprehensive set of standards and best practices for using Git and GitHub within our development team. It covers foundational topics, including the branching strategy, branch naming conventions, commit message guidelines, code review policies, and collaboration workflows. The goal is to maintain a consistent and organized approach to version control, improve collaboration, ensure code quality, and streamline the development process. + +The guidelines in this document are designed to help both new and experienced team members align with the company's coding and collaboration standards, facilitating smoother project management and code integrity. + +--- + +# Git and GitHub: A Comprehensive Guide + +## Table of Contents +1. [Introduction](#introduction) +2. [Understanding Version Control](#understanding-version-control) +3. [Git Basics](#git-basics) + - [What is Git?](#what-is-git) + - [Core Concepts of Git](#core-concepts-of-git) +4. [Getting Started with Git](#getting-started-with-git) + - [Installing Git](#installing-git) + - [Configuring Git](#configuring-git) +5. [Git Essentials](#git-essentials) + - [Repositories](#repositories) + - [Staging and Committing](#staging-and-committing) + - [Branches and Merging](#branches-and-merging) +6. [Introduction to GitHub](#introduction-to-github) + - [What is GitHub?](#what-is-github) + - [Key Features of GitHub](#key-features-of-github) +7. [Working with Repositories on GitHub](#working-with-repositories-on-github) +8. [Git and GitHub Workflow](#git-and-github-workflow) + - [Forking and Cloning](#forking-and-cloning) + - [Pull Requests and Code Reviews](#pull-requests-and-code-reviews) + - [GitHub Issues and Project Management](#github-issues-and-project-management) +9. [Git Commands in Depth](#git-commands-in-depth) +10. [Advanced Git Techniques](#advanced-git-techniques) + - [Rebasing](#rebasing) + - [Cherry-Picking](#cherry-picking) +11. [Common Mistakes and How to Avoid Them](#common-mistakes-and-how-to-avoid-them) + +--- + +## Introduction + +Git and GitHub are essential tools in the modern development landscape, allowing developers to manage changes, work collaboratively, and maintain robust codebases. Git is a distributed version control system that tracks code history, while GitHub enhances this by offering a platform for hosting, reviewing, and managing projects. + +This guide delves into both Git and GitHub, providing an extensive overview that covers everything from beginner concepts to advanced techniques and command usage. + +--- + +## Understanding Version Control + +**Version Control** is the backbone of any collaborative software development project. It allows teams to track code changes, collaborate seamlessly, and maintain a history of modifications to revert to previous versions when needed. + +### Types of Version Control + +1. **Local Version Control**: Simple, single-machine control, not suitable for team environments. +2. **Centralized Version Control (CVCS)**: Stores all file versions on a central server (e.g., SVN). +3. **Distributed Version Control (DVCS)**: Each team member has a full copy of the history and the latest version of the project, with Git being the most prominent DVCS. + +Git is distributed, so it allows every developer to maintain a complete copy of the codebase on their own system, making collaboration more resilient and flexible. + +--- + +## Git Basics + +### What is Git? + +Git is a **distributed version control system** (DVCS) designed to handle projects of all sizes efficiently. It tracks changes to files, enabling developers to manage, review, and revert code. + +### Core Concepts of Git + +1. **Repository**: A collection of files, folders, and their complete revision history. +2. **Commit**: A snapshot of changes with a unique identifier (hash). +3. **Branch**: A separate line of development within a repository. +4. **Merge**: Combines changes from one branch into another, either to incorporate new features or resolve conflicts. +5. **Pull Request (PR)**: A request to merge changes from one branch into another with a code review. + +--- + +## Getting Started with Git + +### Installing Git + +To start using Git, install it on your local system: +- **Linux**: `sudo apt-get install git` +- **macOS**: `brew install git` +- **Windows**: Download from [Git’s website](https://git-scm.com/). + +### Configuring Git + +Set up your name and email, which will be attached to your commits: +```bash +git config --global user.name "Your Name" +git config --global user.email "your.email@example.com" +``` + +To verify configurations: +```bash +git config --list +``` + +--- + +## Git Essentials + +### Repositories + +A **repository** (repo) is the core structure of any Git project. It includes all project files, a history of changes, and branch information. + +### Staging and Committing + +1. **Staging**: The process of adding files to the staging area to prepare them for a commit. +2. **Committing**: Saves a snapshot of the staged changes in the repository with a unique identifier and message. + +Basic workflow: +```bash +git add # Stage changes +git commit -m "Add description of changes" # Commit staged changes +``` + +### Branches and Merging + +Branches let you create separate environments for development, allowing you to work on features without affecting the main codebase. Merging incorporates changes from one branch into another. + +```bash +git branch # Create a new branch +git checkout # Switch to that branch +git merge # Merge branch into current branch +``` + +--- + +## Introduction to GitHub + +### What is GitHub? + +GitHub is a cloud-based platform for Git repositories, providing tools for collaboration, code review, and project management. + +### Key Features of GitHub + +- **Pull Requests**: Propose and discuss changes before merging. +- **Issues**: Track bugs and feature requests. +- **GitHub Actions**: Automate workflows for CI/CD. +- **Project Boards**: Visual task management using Kanban-style boards. + +--- + +## Working with Repositories on GitHub + +1. **Creating a Repository**: Go to GitHub and create a new repository for your project. +2. **Cloning a Repository**: Copy a repository to your local machine with `git clone `. +3. **Syncing with Remote**: Use `git pull` to fetch and merge changes from the remote repo and `git push` to upload changes. + +--- + +## Git and GitHub Workflow + +### Forking and Cloning + +**Forking** allows you to create a copy of another user’s repository, letting you make changes without affecting the original. **Cloning** copies a remote repository to your local machine. + +### Pull Requests and Code Reviews + +- **Opening a PR**: After pushing changes to a branch, create a PR on GitHub to propose merging them into the main branch. +- **Code Reviews**: Collaborators can provide feedback, request changes, or approve the PR. + +### GitHub Issues and Project Management + +GitHub offers **Issues** to track development tasks and **Project Boards** to organize these issues visually. + +--- + +## Git Commands in Depth + +### Working with Commits + +- **View Commit History**: `git log` shows a detailed history of commits. +- **Viewing Differences**: `git diff` displays changes between commits or branches. +- **Amending a Commit**: Modify the last commit with `git commit --amend`. + +### Branch Management + +- **List Branches**: `git branch` shows all branches. +- **Delete a Branch**: `git branch -d ` removes a local branch. +- **Rename a Branch**: `git branch -m ` renames the current branch. + +### Merging Branches + +Merging integrates changes from one branch to another. Use `git merge ` to combine changes into the current branch. + +### Rebasing + +Rebasing applies commits from one branch onto another, maintaining a linear history: +```bash +git rebase +``` + +### Resetting and Reverting + +- **Resetting**: Moves the repository to a previous state. + ```bash + git reset --hard # Discards all changes + git reset --soft # Keeps changes in staging + ``` +- **Reverting**: Undoes a commit by creating a new commit. + ```bash + git revert + ``` + +### Stashing + +Stashing lets you save changes temporarily without committing: +```bash +git stash # Save changes +git stash apply # Restore stashed changes +``` + +### Cherry-Picking + +Cherry-picking applies a specific commit from one branch onto another: +```bash +git cherry-pick +``` + +### Synchronizing with Remotes + +- **Fetch**: `git fetch` downloads updates from the remote repository. +- **Pull**: `git pull` combines `fetch` and `merge`. +- **Push**: `git push` uploads local changes to the remote repository. + +--- + +## Advanced Git Techniques + +### Git Aliases + +Aliases can simplify complex Git commands: +```bash +git config --global alias.st status +git config --global alias.cm commit +``` + +### Interactive Rebase + +Interactive rebasing allows you to reorder, squash, or edit commits: +```bash +git rebase -i +``` + +--- + +## Common Mistakes and How to Avoid Them + +### Forgetting to Stage Changes + +If you forget to `git add` your changes, they won’t be included in your commit. Always check with `git status` before committing. + +### Overwriting History with Rebase + +Rebasing can rewrite history, so it’s recommended to avoid it on branches shared with others. Only rebase + + branches that haven’t been pushed or that you’re working on independently. + +### Ignoring Merge Conflicts + +When merging branches, conflicts may arise. Don’t skip or ignore these! Use a merge tool or manually resolve conflicts, and make sure to commit the resolved changes. + +### Accidental Commits to the Wrong Branch + +Switching branches without committing or stashing changes can result in accidental commits. Always check your branch with `git branch` before committing and use `git stash` to save uncommitted changes if you need to switch. + +### Pushing Sensitive Information + +Never commit sensitive data like passwords, API keys, or credentials. Use a `.gitignore` file to exclude sensitive files and directories: +```bash +echo "config.json" >> .gitignore +``` + +### Force Pushing + +Using `git push --force` can overwrite others' work. Only use `--force` when absolutely necessary, and communicate with your team beforehand. I have removed `--force` capabilitys on the github + + +--- + + +# Branching Structure and Naming Conventions + +## Purpose +This document establishes standards for creating, naming, and managing branches within our repository. Following these guidelines will ensure a clean, organized codebase, making it easier for the team to manage code changes, facilitate collaboration, and maintain clarity across multiple projects. + +## Table of Contents +1. [Branch Structure](#branch-structure) + - [Main Branch](#main-branch) + - [Development Branch](#development-branch) + - [Feature and Ad-Hoc Branches](#feature-and-ad-hoc-branches) +2. [Branch Naming Conventions](#branch-naming-conventions) + - [Prefixes](#prefixes) + - [Examples](#examples) +3. [File Naming Standards](#file-naming-standards) +4. [Workflow for Contributors](#workflow-for-contributors) + +--- + +## Branch Structure + +Our repository follows a structured branching system with two main branches, `main` and `dev`, along with various **feature** and **ad-hoc branches** off `dev` for specific tasks. **All branches off `dev` should be named according to the conventions defined in this document.** + +### 1. `main` Branch + +- **Purpose**: The `main` branch contains **production-ready code**. This is where stable, tested code resides and reflects the latest release version of the codebase. +- **Access**: Only project maintainers can directly merge code into `main`. +- **Merges**: Code merges into `main` should always come from `dev` after passing code reviews and tests. +- **Protection**: This branch is protected by branch rules, requiring code reviews and successful checks before merging. + +### 2. `dev` Branch + +- **Purpose**: The `dev` branch is a **staging branch for testing** new features, bug fixes, and documentation updates before they reach `main`. +- **Access**: All contributors can create branches off `dev` for their work. Contributors are not allowed to push directly to `dev`; all changes must be submitted via pull requests. +- **Merges**: All feature, bugfix, documentation, and test branches should be merged back into `dev` after review and testing. + +### 3. Feature and Ad-Hoc Branches + +- **Purpose**: Branches off `dev` are used for specific features, bug fixes, testing updates, and documentation changes. These branches must follow the naming conventions detailed in the following section. +- **Lifecycle**: Feature and ad-hoc branches are created for individual tasks and are short-lived. Once their purpose is completed, they are merged into `dev` and deleted. +- **Permissions**: Contributors create, work on, and manage these branches off `dev` but **must submit pull requests (PRs) for all changes to `dev`**. + +> **Note**: Only the GitHub repository manager may deviate from these conventions. + +--- + +## Branch Naming Conventions + +To maintain organization and readability, all branches off `dev` must follow these naming conventions. Standard prefixes indicate the branch's purpose and scope, providing clarity to other contributors. + +### General Rules + +- **Lowercase Only**: Branch names must be in lowercase. +- **Hyphens for Separation**: Use hyphens (`-`) to separate words within a branch name. +- **Descriptive Names**: Branch names should indicate the purpose of the branch (e.g., feature, bugfix) and include an identifier if relevant. +- **Reference to Issue/Feature Numbers**: When applicable, include a reference to the GitHub issue number. + +### Prefixes + +| Prefix | Purpose | Example | +|--------------|-------------------------------------------|-------------------------------------------| +| `feature/` | For new features or enhancements | `feature/user-authentication` | +| `bugfix/` | For fixing known bugs or issues | `bugfix/1023-login-error` | +| `docs/` | For documentation updates and additions | `docs/api-endpoints-documentation` | +| `test/` | For changes or additions to tests | `test/add-unit-tests` | +| `hotfix/` | For critical fixes that need immediate attention in `dev` or `main` | `hotfix/production-fix-login-error` | + +> **Note**: All prefixes indicate branches off `dev` and should not directly branch from `main` without repository manager approval. + +### Branch Names, Scenarios and Examples + +| Purpose | Branch Name | Description | +|-------------------|------------------------------------|--------------------------------------------| +| New Feature | `feature/user-registration` | Adds user registration functionality | +| Bug Fix | `bugfix/215-api-authorization` | Fixes authorization issue on API requests | +| Documentation | `docs/setup-instructions` | Adds setup instructions to documentation | +| Testing | `test/integration-test-api` | Adds integration tests for API endpoints | +| Hotfix | `hotfix/cache-issue` | Urgent fix for cache-related issue | + +When working on specific aspects of the project, contributors should use designated branches to ensure consistency and organization. **All branches, unless specified, must be created off the `dev` branch**. Below are common scenarios and the appropriate branches for each task: + +#### 1. **Adding a Web Scraper** + + - **Branch**: `DataCollection` (branch off `dev`) + - **Process**: + - Begin by switching to the `dev` branch: + ```bash + git checkout dev + git pull origin dev + ``` + - Check out the `DataCollection` branch: + ```bash + git checkout DataCollection + ``` + - If `DataCollection` does not exist, create it off `dev`: + ```bash + git checkout -b DataCollection dev + git push -u origin DataCollection + ``` + +#### 2. **Adding Documentation** + + - **Branch**: `docs` (branch off `dev`) + - **Process**: + - Switch to the `dev` branch and pull the latest updates: + ```bash + git checkout dev + git pull origin dev + ``` + - Check out the `docs` branch: + ```bash + git checkout docs + ``` + - If `docs` does not exist, create it off `dev`: + ```bash + git checkout -b docs dev + git push -u origin docs + ``` + +#### 3. **Adding Business Files** + + - **Branch**: `businessfiles` (branch off `dev`) + - **Process**: + - Ensure you’re working from the latest `dev` updates: + ```bash + git checkout dev + git pull origin dev + ``` + - Check out the `businessfiles` branch: + ```bash + git checkout businessfiles + ``` + - If `businessfiles` does not exist, create it off `dev`: + ```bash + git checkout -b businessfiles dev + git push -u origin businessfiles + ``` + +#### 4. **Bug Fixes** + + - **Branch**: `bugfix` (branch off `dev`) + - **Process**: + - Start from the latest `dev` updates: + ```bash + git checkout dev + git pull origin dev + ``` + - Check out the `bugfix` branch: + ```bash + git checkout bugfix + ``` + - If `bugfix` does not exist, create it: + ```bash + git checkout -b bugfix dev + git push -u origin bugfix + ``` + +#### 5. **Hotfixes** + + - **Branch**: `hotfix` (branch off `dev`) + - **Process**: + - Ensure your local `dev` branch is up to date: + ```bash + git checkout dev + git pull origin dev + ``` + - Check out the `hotfix` branch: + ```bash + git checkout hotfix + ``` + - If `hotfix` does not exist, create it: + ```bash + git checkout -b hotfix dev + git push -u origin hotfix + ``` + +#### 6. **Testing** + + - **Branch**: `testing` (branch off `dev`) + - **Process**: + - Start from the latest `dev` branch: + ```bash + git checkout dev + git pull origin dev + ``` + - Check out the `testing` branch: + ```bash + git checkout testing + ``` + - If `testing` does not exist, create it: + ```bash + git checkout -b testing dev + git push -u origin testing + ``` + +#### 7. **Feature Development** + + - **Branch**: `feature/feature-name` (branch off `dev`) + - **Process**: + - Before starting, always check if a specific feature branch exists. + - If no specific branch exists, create a new feature branch off `dev`: + ```bash + git checkout dev + git pull origin dev + git checkout -b feature/your-feature-name dev + git push -u origin feature/your-feature-name + ``` + - **Note**: Follow the naming conventions for all feature branches and verify it branches off `dev`. + +--- + +## Handling Merge Conflicts + +Merge conflicts can occur when changes in two branches affect the same lines of code. Here are best practices and commands to resolve them effectively. + +### Steps to Resolve Merge Conflicts + +1. **Identify the Conflict**: + - When attempting to merge, Git will notify you of conflicts. Use the `git status` command to identify files with conflicts: + ```bash + git status + ``` + +2. **Open and Review Conflicting Files**: + - Open the conflicting files in an editor. Git marks conflicts with `<<<<<<<`, `=======`, and `>>>>>>>`. + - Manually review the changes, decide which version to keep, or combine changes where necessary. + +3. **Mark Conflicts as Resolved**: + - After resolving conflicts in each file, mark it as resolved: + ```bash + git add + ``` + +4. **Complete the Merge**: + - Once all conflicts are resolved, commit the merge: + ```bash + git commit + ``` + +5. **Push the Resolved Branch**: + - After committing, push the branch to the remote repository: + ```bash + git push + ``` + +### Best Practices for Conflict Resolution + +- **Resolve Locally**: If possible, resolve conflicts on your local machine to minimize errors and ensure all changes are reviewed. +- **Communicate with Team Members**: If the conflict is complex or affects significant code, communicate with the involved team members for clarity and to avoid overwriting important changes. +- **Use Git Tools for Assistance**: Tools like `git diff` and `git log` are helpful for understanding changes in context. Additionally, many IDEs offer merge tools that visualize conflicts. + +--- + +## File Naming Standards + +To maintain a consistent and organized structure, file names should follow these standards based on file type. + +### Documentation Files + +- **Capitalized Case**: Use Capitalized Case for documentation files (e.g., `GitAndGitHubStandards.md`). +- **Avoid Special Characters**: Do not use spaces or special characters. +- **Location**: Documentation related to each project should be stored within a `docs/` or `documentation/` directory in the root of each project. + +### Code Files + +- **Lowercase with Underscores**: Use lowercase names with underscores (e.g., `user_authentication.py`). +- **No Spaces or Special Characters**: Avoid spaces or special characters in code file names. +- **Descriptive Names**: Name files according to their primary function or feature (e.g., `data_processing.py` for data processing functions). + +### Directory Naming + +- **Organization by Function**: Directories should be organized by functionality (e.g., `models/`, `controllers/`, `tests/`). +- **Standard Directory Names**: Keep directory names simple and standardized to make navigation intuitive. + +> **Example Directory Structure**: +``` +project_root/ +│ +├── docs/ +│ └── README.md +├── src/ +│ ├── models/ +│ ├── controllers/ +│ ├── utils/ +│ └── main.py +└── tests/ + ├── test_data_processing.py + └── test_user_authentication.py +``` + +--- + +## Workflow for Contributors + +This workflow ensures consistent practices across contributors for setting up branches, working locally, and pushing changes. + +### Step 0: Clone the Repository + +Clone the repository to your local environment if you haven’t already. + +```bash +git clone git@github.com:MiadTechnologiesLCC/MidasTechnologies.git +cd MidasTechnologies +``` + +### Step 1: Set Up Branch Tracking + +Ensure you have the latest branches set up locally: + +```bash +git fetch origin +``` + +### Step 2: Check Out `dev` for New Work + +Always base new work off the `dev` branch: + +```bash +git checkout dev +git pull origin dev # Ensure dev is up to date +``` + +### Step 3: Create a New Branch Off `dev` + +Create a new branch for your work based on the type of work you’re doing (feature, bugfix, docs, etc.). Follow the branch naming conventions. + +```bash +git checkout -b feature/new-feature-name dev +``` + +### Step 4: Make and Commit Changes + +As you work, make regular commits with clear, descriptive messages following our commit message standards: + +```bash +git add . +git commit -m "feat: add feature description" +``` + +### Step 5: Push the Branch to GitHub + +When ready, push your branch to GitHub: + +```bash +git push -u origin feature/new-feature-name +``` + +### Step 6: Create a Pull Request + +- **Create PR**: Go to GitHub and create a pull request (PR) from your feature branch into `dev`. +- **Review Request**: Assign reviewers as necessary and respond to feedback. +- **Ensure Compliance**: Confirm that the PR adheres to all required tests, checks, and naming conventions before approval and merging. + +--- + +## Common Mistakes to Avoid + +1. **Directly Branching Off `main`**: All branches should be created off `dev` unless given explicit permission from the repository manager. +2. **Inconsistent Naming**: Stick to prefix conventions and lowercase names with hyphens to maintain clarity. +3. **Forgetting to Pull `dev` Updates**: Always pull the latest changes from `dev` to avoid conflicts. +4. **Pushing to `dev` Without a PR**: Changes should never be pushed directly to `dev`; submit all changes via a pull request. +5. **Improper File Naming**: Follow naming standards strictly, with documentation files in Capitalized Case and code files in lowercase with underscores. + +--- + +# Code Review Policy + +## Table of Contents + +1. [Code Review Workflow](#code-review-workflow) + - [Opening a Pull Request](#opening-a-pull-request) + - [Review Assignment and Timeline](#review-assignment-and-timeline) +2. [Working with Pull Requests](#working-with-pull-requests) + - [Create a PR for Each Feature](#create-a-pr-for-each-feature) + - [Resolve All Conversations Before Merging](#resolve-all-conversations-before-merging) + - [Merge Protocol](#merge-protocol) +3. [Code Review Focus Areas](#code-review-focus-areas) + - [Code Quality and Consistency](#code-quality-and-consistency) + - [Functionality and Completeness](#functionality-and-completeness) + - [Testing and Coverage](#testing-and-coverage) + - [Security and Performance](#security-and-performance) + - [Documentation and Commenting](#documentation-and-commenting) + - [File Structure and Organization](#file-structure-and-organization) +4. [Reviewer Responsibilities](#reviewer-responsibilities) +5. [Contributor Responsibilities](#contributor-responsibilities) +6. [Final Approval and Merging Process](#final-approval-and-merging-process) + - [Approval Requirements](#approval-requirements) + - [Merging to Dev or Main](#merging-to-dev-or-main) + - [Final Checks Before Merging](#final-checks-before-merging) +7. [Common Code Review Mistakes to Avoid](#common-code-review-mistakes-to-avoid) +8. [Post-Review Responsibilities](#post-review-responsibilities) + +--- + +## Code Review Workflow + +### Opening a Pull Request + +When creating a Pull Request (PR), adhere to the following guidelines to ensure a smooth and productive review process: + +1. **Branch Source**: + - PRs must originate from designated branches, such as **feature**, **bugfix**, **hotfix**, or **docs**, following the [Branch Naming Conventions](./Branch%20Naming%20Conventions.md). + - PRs should generally target the `dev` branch, while only production-ready PRs may target the `main` branch. Merges to `main` are restricted to project maintainers to maintain code quality. + +2. **Title & Description**: + - Use a clear and concise title for each PR. + - Provide a thorough description, covering context, scope, and any relevant issues or implementation details. + - Clearly indicate any special requirements for deployment, breaking changes, or additional dependencies. + +3. **File Organization**: + - Follow the [# file-path standards](#file-path-standards) to ensure all new files and directories are structured for efficient navigation and ease of maintenance. + +### Review Assignment and Timeline + +- Assign PRs to experienced reviewers in relevant code areas. For complex changes, multiple reviewers may be required. +- Use GitHub tags to notify reviewers, aiming for a 24–48 hour turnaround on PR reviews to support an efficient workflow. + +--- + +## Working with Pull Requests + +### Create a PR for Each Feature + +- Link the PR to any associated issues or tasks for traceability. +- Request a review from team members knowledgeable about the relevant functionality. + +### Resolve All Conversations Before Merging + +- Address all reviewer feedback and mark conversations as resolved before final approval. +- If substantial modifications are made in response to feedback, re-request a review to ensure consensus. + +### Merge Protocol + +- **PRs into `dev`**: These require at least one reviewer’s approval. +- **PRs from `dev` to `main`**: Limited to the project maintainer, with thorough testing and final approval required to ensure the stability of `main`. + +--- + +## Code Review Focus Areas + +Reviewers should concentrate on these critical areas to ensure quality, functionality, and maintainability across the codebase: + +### Code Quality and Consistency + +- Follow our [Coding Standards](./Coding%20Standards.md) for readability, maintainability, and consistency. +- Maintain modularity and avoid redundancy, using existing functions or libraries where appropriate. +- Confirm adherence to language-specific standards (e.g., PEP8 for Python). + +### Functionality and Completeness + +- Verify that the code performs as intended without regressions. +- Ensure all specified use cases, including edge cases, are covered. Seek clarification from the contributor if requirements are ambiguous. + +### Testing and Coverage + +- Check for sufficient test coverage, ideally at least 85%, with a preference for automated tests. +- Ensure all tests, including unit, integration, and end-to-end (E2E) tests, pass successfully. +- Confirm compliance with the [# file-path standards](#file-path-standards) for consistency in test file organization. + +### Security and Performance + +- Assess for potential security vulnerabilities, especially in areas related to data handling, user authentication, or API calls. +- Evaluate performance, suggesting improvements if any bottlenecks or inefficiencies are detected. + +### Documentation and Commenting + +- All public functions, classes, and methods should have clear docstrings, following our [Documentation Standards](./Documentation%20Standards.md). +- Complex logic should be well-commented to explain non-standard approaches or optimizations. +- Verify updates to user or developer documentation when relevant. + +### File Structure and Organization + +- Ensure new files and directories align with the [# file-path standards](#file-path-standards) to maintain logical structure. +- Check that file organization is consistent with the established hierarchy, supporting ease of access and maintenance. + +--- + +## Reviewer Responsibilities + +Reviewers are accountable for providing timely, constructive, and actionable feedback: + +- **Timely Feedback**: Complete PR reviews within 24–48 hours whenever possible. +- **Constructive Feedback**: Offer specific, actionable suggestions for improvements, avoiding vague criticism. +- **Approval Process**: + - Only approve PRs if they meet quality standards and have no outstanding issues. + - Request changes if additional work is needed or standards are not met. + - Ensure compliance with the [# file-path standards](#file-path-standards), naming conventions, and coding guidelines. +- **Professionalism**: Maintain respect and clarity in all feedback, focusing on improvement. + +--- + +## Contributor Responsibilities + +Contributors are responsible for ensuring their code is up to standard prior to submission: + +1. **Self-Review**: Conduct a thorough self-review, verifying clarity, standards compliance, and testing. +2. **Feedback Response**: Address all reviewer comments and make necessary changes, re-requesting a review if major adjustments are made. +3. **Conversation Resolution**: Mark all feedback conversations as resolved before requesting final approval. +4. **Commit Standards**: Follow [Commit Message Standards](./Commit%20Message%20Standards.md) to keep commit messages informative, consistent, and concise. + +--- + +## Final Approval and Merging Process + +### Approval Requirements + +- PRs must have at least one reviewer’s approval, with additional reviewers for complex or high-risk changes. +- Only project maintainers or designated personnel may approve and merge PRs into `main`. + +### Merging to Dev or Main + +- **Merging into `dev`**: Contributors may merge PRs after at least one review and approval. +- **Merging into `main`**: Restricted to maintainers; requires extensive testing to confirm production readiness. + +### Final Checks Before Merging + +- Ensure all tests pass and the latest code changes are integrated into the PR. +- Verify the [# file-path standards](#file-path-standards) are followed and the directory structure is organized. +- Update the PR description with any final notes or additional context. + +--- + +## Common Code Review Mistakes to Avoid + +1. **Skipping Self-Review**: Self-review reduces back-and-forth and helps identify issues preemptively. +2. **Insufficient Test Coverage**: Lack of comprehensive tests can lead to unexpected bugs. Aim to cover all use cases and edge scenarios. +3. **Premature Approval**: Ensure understanding of the PR’s purpose and functionality before approving. +4. **File and Path Non-Compliance**: Files should adhere to naming and path standards as detailed in [# file-path standards](#file-path-standards). + +--- + +## Post-Review Responsibilities + +### Continuous Improvement + +- Identify opportunities for process improvement based on challenges encountered during the review. +- Record valuable lessons, significant changes, or patterns in a shared knowledge base for future use. + +### Follow-up Tasks + +- Log any remaining issues or future improvements as GitHub issues for future sprints. +- Update documentation when significant changes impact user guides, API references, or other project docs. + +### Retrospective and Feedback + +- Periodically evaluate the review process's effectiveness, gathering feedback to refine workflow, collaboration, and code quality practices. + diff --git a/docs/PoliciesAndStandards/README.md b/docs/PoliciesAndStandards/README.md new file mode 100644 index 0000000..8382181 --- /dev/null +++ b/docs/PoliciesAndStandards/README.md @@ -0,0 +1,83 @@ +# Policies and Standards + +Welcome to the **Policies and Standards** directory! This section contains critical documentation outlining the standards, practices, and workflows that guide our team’s development and collaboration processes. Adhering to these policies ensures consistency, quality, and efficient collaboration within the project. + +## Table of Contents + +1. [Overview](#overview) +2. [File Descriptions](#file-descriptions) + - [CodingStandards.md](#codingstandardsmd) + - [CommunicationStandards.md](#communicationstandardsmd) + - [DocumentationStandards.md](#documentationstandardsmd) + - [FilePathStandards.md](#filepathstandardsmd) + - [GitAndGitHubStandards.md](#gitandgithubstandardsmd) +3. [Using this Documentation](#using-this-documentation) + +--- + +## Overview + +This directory serves as the central reference point for all policies and standards governing our project’s development practices. Each document is purpose-built to address specific facets of our workflow, from coding conventions to GitHub management. Contributors should familiarize themselves with each section to ensure their work aligns with our established standards. + +## File Descriptions + +### 1. CodingStandards.md +**Purpose**: Defines the coding standards for our primary language, Python, along with additional guidelines for languages that interact with Python (e.g., C, JSON, Rust). + +**Key Points**: + - **Python Coding Standards**: Emphasizes PEP8 adherence, docstrings, naming conventions, and version control with `venv`. + - **Interface Language Standards**: Guidance on C extensions, Rust integration, TypeScript, JSON, and SQL standards. + - **Virtual Environments**: Explanation of `venv` management, `.gitignore` configurations, and best practices for `requirements.txt`. + +**Useful for**: Any team member involved in writing or reviewing code across languages, especially those needing to understand Python-centric practices. + +### 2. CommunicationStandards.md +**Purpose**: Provides guidelines for communication, task assignment, and collaboration methods, ensuring smooth project coordination and prompt issue resolution. + +**Key Points**: + - **Communication Channels**: Standards for using GitHub Issues, Pull Requests, and team meetings. + - **Collaborative Practices**: Code review protocols, issue assignments, and conflict resolution strategies. + - **Labor Distribution**: Suggested systems for assigning and managing tasks effectively within GitHub. + +**Useful for**: Contributors and project managers coordinating workflow, code reviews, and project task assignments. + +### 3. DocumentationStandards.md +**Purpose**: Outlines best practices for documenting code, project functionality, and business-related information, maintaining accessible and comprehensive documentation. + +**Key Points**: + - **README and Inline Documentation**: Standards for writing and organizing README files for each module, docstrings, and inline comments. + - **Documentation File Naming**: Instructions on file naming, Markdown use, and placement of documentation within the directory structure. + - **Documentation for Modular Code**: Guidelines on modular documentation, where root-level modules should contain individual `README.md` files. + +**Useful for**: Anyone writing documentation, comments, or README files to support the codebase and clarify business practices. + +### 4. FilePathStandards.md +**Purpose**: Establishes naming conventions and directory structures to ensure consistency across the entire codebase. + +**Key Points**: + - **Directory Structure**: Suggested layout for primary directories (`src/`, `docs/`, `tests/`, etc.) and subdirectories for functionality-specific code. + - **File Naming Conventions**: Rules for lowercase, underscored, and hyphenated naming styles to avoid ambiguity. + - **Special Conventions**: Specific guidelines for the `docs/` directory structure, README file formats, and `data` directory usage. + +**Useful for**: Contributors adding or reorganizing files, ensuring all files and directories comply with standard naming and structure guidelines. + +### 5. GitAndGitHubStandards.md +**Purpose**: Provides a thorough explanation of Git and GitHub practices, branch naming conventions, and commit message formatting, ensuring effective version control and collaboration. + +**Key Points**: + - **Git Overview and Workflows**: Explains the basics of Git, including branch structure, merging practices, and handling merge conflicts. + - **Commit Messages**: Detailed formatting for clear and useful commit messages. + - **Branch Naming Conventions**: Guidelines on naming branches based on purpose (e.g., `feature/`, `bugfix/`) to keep the repository organized. + +**Useful for**: Contributors managing version control through Git and GitHub, particularly when creating branches or preparing for merges. + +--- + +## Using this Documentation + +- **Navigation**: Each document can be navigated using the Table of Contents above. For users with VimWiki enabled in Vim or Neovim, Markdown links will automatically convert into navigable wiki-style links. +- **Before Making Changes**: Always review the relevant standards document before adding or modifying files, writing documentation, or altering code. +- **Updating Documentation**: If your code contributions impact an existing policy or standard, consult with the project maintainer to ensure documentation is updated accordingly. + +By following the practices outlined in these files, you’ll help maintain the quality, readability, and organization of our project, benefiting both current contributors and future collaborators. + diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 0000000..b22b629 --- /dev/null +++ b/docs/README.md @@ -0,0 +1,69 @@ +# Documentation Directory + +Welcome to the **Documentation** directory for the project. This directory is divided into three primary sections: **Business Documentation**, **Policies and Standards**, and **Man Pages**. Each subdirectory has a unique purpose and serves to organize our project’s documentation comprehensively. Please follow the structure and guidelines below when adding new documents. + +--- + +## Directory Structure + +``` +docs/ +│ +├── business_docs/ +│ ├── business_plan.md +│ ├── lcc_documentation.md +│ └── legal_license.md +│ +├── policies_standards/ +│ ├── coding_standards.md +│ ├── code_review_policy.md +│ ├── documentation_standards.md +│ └── file_path_standards.md +│ +└── man_pages/ + └── overall_code_documentation.md +``` + +--- + +## Sections + +### 1. Business Documentation + +- **Purpose**: Contains all relevant business-related documentation, legal filings, and operational plans. This section helps ensure that we keep a clear record of our company’s structural and strategic information. +- **Contents**: + - `business_plan.md`: Outlines our company’s mission, vision, target market, competitive analysis, and growth strategies. + - `lcc_documentation.md`: Contains LLC formation details, ownership structure, and any legal requirements. + - `legal_license.md`: Provides a summary of licenses, terms, and legal disclaimers for our software products. + +### 2. Policies and Standards + +- **Purpose**: This section includes all coding, collaboration, and workflow guidelines to maintain consistency and quality across the project. It also contains standard operating procedures (SOPs) for code quality and collaboration, fostering a productive and unified development environment. +- **Contents**: + - `coding_standards.md`: Outlines coding conventions and best practices for this project. + - `code_review_policy.md`: Details our policies for reviewing code and handling pull requests. + - `documentation_standards.md`: Specifies standards for documenting code and creating README files. + - `file_path_standards.md`: Establishes naming conventions and organization standards for files and directories. + +### 3. Man Pages + +- **Purpose**: Acts as an accessible, high-level guide to overall code structure, intended to assist both new and existing team members in understanding the project’s architecture. This section contains **man pages** for broader code documentation, while specific functionality and module-level details can be found in `src/` README files. +- **Contents**: + - `overall_code_documentation.md`: Offers a high-level overview of the codebase, including descriptions of major components, workflows, and integrations within the project. + +--- + +## Guidelines for Adding Documentation + +1. **Check the Directory**: + - Ensure you are adding files to the correct subdirectory according to the document’s purpose. +2. **Naming Conventions**: + - Use clear, concise, and descriptive file names for new documents. + - File names should be lowercase and use underscores instead of spaces (e.g., `new_policy_doc.md`). +3. **Update Section Summaries**: + - When adding new files, briefly update this `README.md` to reflect any changes within each section. + +--- + +Each contributor should refer to this directory and structure before adding or modifying documentation to maintain clarity and organization throughout the project. For specific questions on policies or code documentation, refer to the relevant files in **Policies and Standards** or **Man Pages**. + diff --git a/idealstructure.md b/idealstructure.md deleted file mode 100644 index e24dd06..0000000 --- a/idealstructure.md +++ /dev/null @@ -1,65 +0,0 @@ -To maintain a clean and organized GitHub repository structure, particularly with multiple documentation files, it’s essential to have a structured hierarchy. Here’s a layout that will keep your project files organized and accessible for contributors: - -### Suggested Repository Structure - -```plaintext -MidasTechnologies/ -├── .github/ # GitHub-specific files -│ ├── ISSUE_TEMPLATE/ # GitHub issue templates -│ ├── PULL_REQUEST_TEMPLATE.md # Pull request template -│ └── workflows/ # CI/CD workflow files -│ └── ci.yml # Example CI configuration (e.g., GitHub Actions) -├── docs/ # Documentation directory -│ ├── README.md # Overview of documentation contents -│ ├── setup/ # Setup-related docs -│ │ ├── installation.md # Installation instructions -│ │ └── configuration.md # Configuring the environment or application -│ ├── guides/ # Guide files for team collaboration -│ │ ├── branching.md # Branching strategy guide (from previous step) -│ │ ├── code_style.md # Code style and formatting standards -│ │ ├── contributing.md # Contribution guidelines -│ │ └── testing.md # Testing and CI/CD setup guide -│ ├── reference/ # Technical references or design documentation -│ │ ├── architecture.md # Project architecture -│ │ └── data_structures.md # Key data structures and algorithms used -│ └── API/ # API documentation, if applicable -│ └── api_overview.md # Overview of APIs used or exposed by the project -├── src/ # Source code directory -│ ├── main/ # Main branch source code -│ └── dev/ # Development branch source code -├── tests/ # Testing suite and files -│ ├── unit/ # Unit tests -│ ├── integration/ # Integration tests -│ └── README.md # Overview of testing guidelines -├── .gitignore # Git ignore file -├── LICENSE # License file for the repository -└── README.md # Main README for the repository -``` - -### Directory Explanation - -1. **`.github/`:** Contains GitHub-specific configuration files, such as issue and pull request templates, as well as workflows for automated testing and CI/CD. - -2. **`docs/`:** All documentation files, organized into meaningful subdirectories. - - **`setup/`:** For setup-related documentation like installation, configuration, and environment setup. - - **`guides/`:** Team collaboration guides, including the branching guide, contribution guidelines, and code style documents. - - **`reference/`:** More technical references, project architecture, and specific implementations for future reference. - - **`API/`:** Documentation for APIs if your project has them. - -3. **`src/`:** Contains all source code, organized into the `main` and `dev` branches or modules if needed. - -4. **`tests/`:** For all testing-related files, including subdirectories for unit and integration tests, plus a README outlining test protocols. - -5. **Project Root Files:** - - **`.gitignore`:** For files and directories to ignore in the repository. - - **`LICENSE`:** Licensing information for the repository. - - **`README.md`:** Main project overview, including how to get started, major features, and basic setup steps. - -### Additional Tips - -- **Keep Documentation Centralized:** The `docs/` directory keeps all documentation in one place, easy to locate and update. -- **Standardize Documentation Files:** Use markdown (`.md`) for all documentation to ensure readability on GitHub and other markdown-rendering platforms. -- **Use Templates in `.github/`:** Issue and pull request templates help streamline contributions and feedback. -- **README.md Clarity:** The main README file should serve as a quick start guide and overview for the repository. This document should also link to relevant documentation files within `docs/`. - -This structure will make the repository accessible and organized, simplifying onboarding, documentation, and collaboration among team members. diff --git a/API/API_1.ipynb b/src/API/API_1.ipynb similarity index 100% rename from API/API_1.ipynb rename to src/API/API_1.ipynb diff --git a/API/API_2 (1).ipynb b/src/API/API_2 (1).ipynb similarity index 100% rename from API/API_2 (1).ipynb rename to src/API/API_2 (1).ipynb diff --git a/API/Trading_Bot_Development_Strategy (1).docx b/src/API/Trading_Bot_Development_Strategy (1).docx similarity index 100% rename from API/Trading_Bot_Development_Strategy (1).docx rename to src/API/Trading_Bot_Development_Strategy (1).docx diff --git a/Data-Collection/.gitignore b/src/Data-Collection/.gitignore similarity index 100% rename from Data-Collection/.gitignore rename to src/Data-Collection/.gitignore diff --git a/Data-Collection/WebScraper/README.md b/src/Data-Collection/WebScraper/README.md similarity index 100% rename from Data-Collection/WebScraper/README.md rename to src/Data-Collection/WebScraper/README.md diff --git a/Data-Collection/WebScraper/assets/oil_key_words.txt b/src/Data-Collection/WebScraper/assets/oil_key_words.txt similarity index 100% rename from Data-Collection/WebScraper/assets/oil_key_words.txt rename to src/Data-Collection/WebScraper/assets/oil_key_words.txt diff --git a/Data-Collection/WebScraper/data/oil_news.json b/src/Data-Collection/WebScraper/data/oil_news.json similarity index 100% rename from Data-Collection/WebScraper/data/oil_news.json rename to src/Data-Collection/WebScraper/data/oil_news.json diff --git a/Data-Collection/WebScraper/data/preprocessed_oil_news.json b/src/Data-Collection/WebScraper/data/preprocessed_oil_news.json similarity index 100% rename from Data-Collection/WebScraper/data/preprocessed_oil_news.json rename to src/Data-Collection/WebScraper/data/preprocessed_oil_news.json diff --git a/Data-Collection/WebScraper/main.py b/src/Data-Collection/WebScraper/main.py similarity index 100% rename from Data-Collection/WebScraper/main.py rename to src/Data-Collection/WebScraper/main.py diff --git a/Data-Collection/WebScraper/main.py.bak b/src/Data-Collection/WebScraper/main.py.bak similarity index 100% rename from Data-Collection/WebScraper/main.py.bak rename to src/Data-Collection/WebScraper/main.py.bak diff --git a/Data-Collection/WebScraper/scrapers/__pycache__/oil_news_preprocessor.cpython-311.pyc b/src/Data-Collection/WebScraper/scrapers/__pycache__/oil_news_preprocessor.cpython-311.pyc similarity index 100% rename from Data-Collection/WebScraper/scrapers/__pycache__/oil_news_preprocessor.cpython-311.pyc rename to src/Data-Collection/WebScraper/scrapers/__pycache__/oil_news_preprocessor.cpython-311.pyc diff --git a/Data-Collection/WebScraper/scrapers/__pycache__/oil_news_scraper.cpython-311.pyc b/src/Data-Collection/WebScraper/scrapers/__pycache__/oil_news_scraper.cpython-311.pyc similarity index 100% rename from Data-Collection/WebScraper/scrapers/__pycache__/oil_news_scraper.cpython-311.pyc rename to src/Data-Collection/WebScraper/scrapers/__pycache__/oil_news_scraper.cpython-311.pyc diff --git a/Data-Collection/WebScraper/scrapers/backups/oil_news_preprocessor.py.bak b/src/Data-Collection/WebScraper/scrapers/backups/oil_news_preprocessor.py.bak similarity index 100% rename from Data-Collection/WebScraper/scrapers/backups/oil_news_preprocessor.py.bak rename to src/Data-Collection/WebScraper/scrapers/backups/oil_news_preprocessor.py.bak diff --git a/Data-Collection/WebScraper/scrapers/backups/oil_news_scraper.py.bak b/src/Data-Collection/WebScraper/scrapers/backups/oil_news_scraper.py.bak similarity index 100% rename from Data-Collection/WebScraper/scrapers/backups/oil_news_scraper.py.bak rename to src/Data-Collection/WebScraper/scrapers/backups/oil_news_scraper.py.bak diff --git a/Data-Collection/WebScraper/scrapers/oil_news_preprocessor.py b/src/Data-Collection/WebScraper/scrapers/oil_news_preprocessor.py similarity index 100% rename from Data-Collection/WebScraper/scrapers/oil_news_preprocessor.py rename to src/Data-Collection/WebScraper/scrapers/oil_news_preprocessor.py diff --git a/Data-Collection/WebScraper/scrapers/oil_news_scraper.py b/src/Data-Collection/WebScraper/scrapers/oil_news_scraper.py similarity index 100% rename from Data-Collection/WebScraper/scrapers/oil_news_scraper.py rename to src/Data-Collection/WebScraper/scrapers/oil_news_scraper.py diff --git a/Data-Collection/WebScraper/scrapers/tests/author_info.json b/src/Data-Collection/WebScraper/scrapers/tests/author_info.json similarity index 100% rename from Data-Collection/WebScraper/scrapers/tests/author_info.json rename to src/Data-Collection/WebScraper/scrapers/tests/author_info.json diff --git a/Data-Collection/WebScraper/scrapers/tests/author_scraper_test.py b/src/Data-Collection/WebScraper/scrapers/tests/author_scraper_test.py similarity index 100% rename from Data-Collection/WebScraper/scrapers/tests/author_scraper_test.py rename to src/Data-Collection/WebScraper/scrapers/tests/author_scraper_test.py diff --git a/Data-Collection/WebScraper/scrapers/tests/author_scraper_test.py.bak b/src/Data-Collection/WebScraper/scrapers/tests/author_scraper_test.py.bak similarity index 100% rename from Data-Collection/WebScraper/scrapers/tests/author_scraper_test.py.bak rename to src/Data-Collection/WebScraper/scrapers/tests/author_scraper_test.py.bak diff --git a/Data-Collection/WebScraper/scrapers/tests/selenium_webdriver_test.py b/src/Data-Collection/WebScraper/scrapers/tests/selenium_webdriver_test.py similarity index 100% rename from Data-Collection/WebScraper/scrapers/tests/selenium_webdriver_test.py rename to src/Data-Collection/WebScraper/scrapers/tests/selenium_webdriver_test.py diff --git a/Data-Collection/WebScraper/setup.py b/src/Data-Collection/WebScraper/setup.py similarity index 100% rename from Data-Collection/WebScraper/setup.py rename to src/Data-Collection/WebScraper/setup.py diff --git a/GUSHTradingBotV1.0.py b/src/GUSHTradingBotV1.0.py similarity index 100% rename from GUSHTradingBotV1.0.py rename to src/GUSHTradingBotV1.0.py