<commit_before># QuantiTeam Report Outline Draft

- Cover page
- Abstract
- Acknowledgements
- List of figures
- Abbreviations  

## Introduction (~2-4 pages)
- Problem Outline/Problem Domain/Challenges
    - Learn how to write smart contracts (Solidity)
    - Experiment with native dev via React Native after using React and Cordova heavily previously, to provide the simplest but powerful UX possible for a complex backend
- Goals/Scope
    - Working public API interface for blockchain via Node server
    - iOS client-side app for basic task/user/team management
    - Basic deployment of distributed validator nodes
- Approach to Project/Project Management/Project Overview
    - waterfall dev?

<<<<<<<<<<<<<<<<<<<<<<<<   
(Probably belongs in main body)
- Proof-of-concept with the chain running on single node on localhost
- Experimentation with low-level features of chain & solidity via cURL requests
- Static mockup of the React Native components initially, linked up with a Redux store once API bridge was established

/(Probably belongs in main body)  
<<<<<<<<<<<<<<<<<<<<<<<<   

- Report Overview

## Background Information & Related Applications/Work (~8-10 pages)
- Basis of design **_(put these points in Aims instead?)_**
    - Blockchains as commonplace novel application for financial auditing/smart contracts
    - Taking blockchains and smart contracts beyond finance: verifiability & incorruptibility of team work metadata
    - Possible application domain: Create opportunity for open-source version of HaikuLearning or WikiSpaces
- Background Research (investigation) - Software engineering methodologies and technology stack
    - _(((Agile, Scrum, Kanban (justify why I ended up with simple Kanban board) )))_
    - Blockchain:
        - OpenChain (contract chaining, but documentation/implementation sucked) vs MultiChain vs Eris+TenderMint
        - Smart contract design & Soliditys capabilities (Eris Tutorials, Solidity docs)
    - Databases: SQL vs NoSQL vs Blockchain
        - Ease of data structuring/scalability vs. no central point of failure but less storage efficiency and more complex integrity maintenance compared to SQL. Favourable in comparison to noSQL?
    - Server-side:
        - Express as useful abstraction from raw Node server+routing
    - Client-side:
        - React Native vs WebView implementations (i.e. Cordova), React: DRY, modularity, encapsulation, composable
        - MVC vs Unidirectional dataflow: Advantages of Redux, single source of truth, easy to reason
    - _(((Redux vs Flow vs Reflux etc.)))_
    - Smart components vs Dumb components
- Existing Related Applications
- Programming Languages/Technologies/Libraries/Software Tools Selected
    - React Native (incorporates HTML5, CSS/Flexbox, AsyncStorage(?)
    - Redux
    - Node
    - Docker/Docker-Machine
    - Kanban board (GH issues + waffle.io)
    - Testing frameworks: Mocha, Chai (TDD with `assert`), Istanbul (code coverage)
    - Dev tools: Version control (Git), Code hosting (Github), Editor (Atom+Nuclide+ESLint), Flow (ES6 static type analyser), `envsetup.sh` & `simplechain.sh` scripts
    - Debugging: Redux logger+Chrome console, Log4JS+erisLogger, raw logs from the TenderMint chain

## Requirements & Analysis (~5-6 pages)
- Problem Statement
- Requirements/Requirements Gathering/Functional requirements vs Non-functional requirements
- Use Cases
- Analysis & Data Modelling
    - Initial Deployment diagram
    - Development of SQL/noSQL-free data structure with blockchain as verifier and store simultaneously (add updated deployment diagram)
    - PK/FK simulation via the `linker` and on-chain addresses
    - UML class diagrams
    - Blockchain analysis:
        - ERD
        - Data structure/model
            - SequenceList contract
            - Type contracts
            - Manager contracts
            - Linker contract
    - Pipeline server analysis:
        - data relay/transformer
        - (almost?) stateless
    - Client side data flow and structure
        - UML state diagrams: perfect for Redux
        - Redux store
        - Unidirectional data flow (dispatcher, stores, actions etc.)

## Design & Implementation (~10+ pages)
- Source code structure
    - `chain`<commit_msg>Update outline<commit_after># QuantiTeam Report Outline Draft

- Cover page
- Abstract
- Acknowledgements
- List of figures
- Abbreviations  

## Introduction (~2-4 pages)
- Problem Outline/Problem Domain/Challenges
    - Learn how to write smart contracts (Solidity)
    - Experiment with native dev via React Native after using React and Cordova heavily previously, to provide the simplest but powerful UX possible for a complex backend
- Goals/Scope
    - Working public API interface for blockchain via Node server
    - iOS client-side app for basic task/user/team management
    - Basic deployment of distributed validator nodes
- Approach to Project/Project Management/Project Overview
    - waterfall dev?

<<<<<<<<<<<<<<<<<<<<<<<<   
(Probably belongs in main body)
- Proof-of-concept with the chain running on single node on localhost
- Experimentation with low-level features of chain & solidity via cURL requests
- Static mockup of the React Native components initially, linked up with a Redux store once API bridge was established

/(Probably belongs in main body)  
<<<<<<<<<<<<<<<<<<<<<<<<   

- Report Overview

## Background Information & Related Applications/Work (~8-10 pages)
- Basis of design **_(put these points in Aims instead?)_**
    - Blockchains as commonplace novel application for financial auditing/smart contracts
    - Taking blockchains and smart contracts beyond finance: verifiability & incorruptibility of team work metadata
    - Possible application domain: Create opportunity for open-source version of HaikuLearning or WikiSpaces
- Background Research (investigation) - Software engineering methodologies and technology stack
    - _(((Agile, Scrum, Kanban (justify why I ended up with simple Kanban board) )))_
    - Blockchain:
        - OpenChain (contract chaining, but documentation/implementation sucked) vs MultiChain vs Eris+TenderMint
        - Smart contract design & Soliditys capabilities (Eris Tutorials, Solidity docs)
    - Databases: SQL vs NoSQL vs Blockchain
        - Ease of data structuring/scalability vs. no central point of failure but less storage efficiency and more complex integrity maintenance compared to SQL. Favourable in comparison to noSQL?
    - Server-side:
        - Express as useful abstraction from raw Node server+routing
    - Client-side:
        - React Native vs WebView implementations (i.e. Cordova), React: DRY, modularity, encapsulation, composable
        - MVC vs Unidirectional dataflow: Advantages of Redux, single source of truth, easy to reason
    - _(((Redux vs Flow vs Reflux etc.)))_
    - Smart components vs Dumb components
- Existing Related Applications
- Programming Languages/Technologies/Libraries/Software Tools Selected
    - React Native (incorporates HTML5, CSS/Flexbox, AsyncStorage(?)
    - Redux
    - Node
    - Docker/Docker-Machine
    - Kanban board (GH issues + waffle.io)
    - Testing frameworks: Mocha, Chai (TDD with `assert`), Istanbul (code coverage)
    - Dev tools: Version control (Git), Code hosting (Github), Editor (Atom+Nuclide+ESLint), Flow (ES6 static type analyser), `envsetup.sh` & `simplechain.sh` scripts
    - Debugging: Redux logger+Chrome console, Log4JS+erisLogger, raw logs from the TenderMint chain

## Requirements & Analysis (~5-6 pages)
- Problem Statement
- Requirements/Requirements Gathering/Functional requirements vs Non-functional requirements
- Use Cases
- Analysis & Data Modelling
    - Initial Deployment diagram
    - Development of SQL/noSQL-free data structure with blockchain as verifier and store simultaneously (add updated deployment diagram)
    - PK/FK simulation via the `linker` and on-chain addresses
    - UML class diagrams
    - Blockchain analysis:
        - _(((ERD)))_
        - Docker/Docker-Machine
        - Data structure/model
            - SequenceList contract
            - Type contracts
            - Manager contracts
            - Linker contract
    - Pipeline server analysis:
        - data relay/transformer
        - (almost?) stateless
        - 2-3 sequence diagrams
    - Client side data flow and structure
        - UML state diagrams: perfect for Redux
        - Redux store
        - Unidirectional data flow (dispatcher, stores, actions etc.)

## Design & Implementation (~10+ pages)
- Source code structure
    - `chain`
{'fraction_non_alphanumeric': 0.07480452794958571, 'fraction_numerical': 0.0030341930213560507, 'mean_word_length': 3.39712673165726, 'pattern_counts': {'":': 0, '<': 99, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 2, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6398948', 'n_tokens_mistral': 2266, 'n_tokens_neox': 2132, 'n_words': 922}