Skip to content

Conversation

@ibroom
Copy link
Contributor

@ibroom ibroom commented Nov 28, 2025

Updated architecture diagram to demonstrate how AI models are used

Summary by CodeRabbit

  • Documentation
    • Updated data flow diagram reference to the latest version.
    • Added comprehensive documentation standards guide covering documentation structure, development environments, JavaScript practices, API patterns, testing guidelines, and asset provisioning protocols.

✏️ Tip: You can customize this high-level summary in your review settings.

@ibroom ibroom requested a review from Arpanexe November 28, 2025 13:50
@coderabbitai
Copy link

coderabbitai bot commented Nov 28, 2025

Walkthrough

This PR updates the data flow diagram image reference version and introduces a new comprehensive documentation file establishing unified standards for documentation structure, development environments, JavaScript practices, API patterns, and testing guidelines.

Changes

Cohort / File(s) Summary
Documentation updates
docs/Data-flow.md
Updated data flow diagram image reference version from v=2 to v=3
Documentation standards
docs/documentation-and-coding-standards.md
New file added defining unified standards including documentation structure templates, development environment guidelines (Studio vs App), JavaScript coding practices, API method documentation patterns, error handling conventions, and testing guidelines with quick reference sections and code examples

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~3 minutes

Possibly related PRs

Suggested reviewers

  • Arpanexe
  • debankurghosh2061

Pre-merge checks and finishing touches

❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Title check ⚠️ Warning The title references 'renamed file' but the changeset only updates an image reference and adds a new documentation file; no file renaming occurs. Revise the title to accurately reflect the actual changes, such as 'Update architecture diagram and add documentation standards' to better represent the modifications made.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch diagram-update

Tip

📝 Customizable high-level summaries are now available in beta!

You can now customize how CodeRabbit generates the high-level summary in your pull requests — including its content, structure, tone, and formatting.

  • Provide your own instructions using the high_level_summary_instructions setting.
  • Format the summary however you like (bullet lists, tables, multi-section layouts, contributor stats, etc.).
  • Use high_level_summary_in_walkthrough to move the summary from the description to the walkthrough section.

Example instruction:

"Divide the high-level summary into five sections:

  1. 📝 Description — Summarize the main change in 50–60 words, explaining what was done.
  2. 📓 References — List relevant issues, discussions, documentation, or related PRs.
  3. 📦 Dependencies & Requirements — Mention any new/updated dependencies, environment variable changes, or configuration updates.
  4. 📊 Contributor Summary — Include a Markdown table showing contributions:
    | Contributor | Lines Added | Lines Removed | Files Changed |
  5. ✔️ Additional Notes — Add any extra reviewer context.
    Keep each section concise (under 200 words) and use bullet or numbered lists for clarity."

Note: This feature is currently in beta for Pro-tier users, and pricing will be announced later.


Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4

📜 Review details

Configuration used: CodeRabbit UI

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between eab29c8 and f2f58b8.

⛔ Files ignored due to path filters (1)
  • docs/assets/img/architecture.png is excluded by !**/*.png
📒 Files selected for processing (2)
  • docs/Data-flow.md (1 hunks)
  • docs/documentation-and-coding-standards.md (1 hunks)
🧰 Additional context used
🪛 LanguageTool
docs/documentation-and-coding-standards.md

[grammar] ~179-~179: Did you mean the adverb/preposition “within”?
Context: ... the tools that end-users will interact with in the published app. **When to use Studi...

(WITH_IN)

🪛 markdownlint-cli2 (0.18.1)
docs/documentation-and-coding-standards.md

8-8: Ordered list item prefix
Expected: 1; Actual: 2; Style: 1/1/1

(MD029, ol-prefix)


9-9: Ordered list item prefix
Expected: 1; Actual: 3; Style: 1/1/1

(MD029, ol-prefix)


12-12: Ordered list item prefix
Expected: 1; Actual: 4; Style: 1/1/1

(MD029, ol-prefix)


18-18: Ordered list item prefix
Expected: 1; Actual: 5; Style: 1/1/1

(MD029, ol-prefix)


19-19: Ordered list item prefix
Expected: 1; Actual: 6; Style: 1/1/1

(MD029, ol-prefix)


22-22: Link fragments should be valid

(MD051, link-fragments)


23-23: Ordered list item prefix
Expected: 1; Actual: 7; Style: 1/1/1

(MD029, ol-prefix)


41-41: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


42-42: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


43-43: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


44-44: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


51-51: Ordered list item prefix
Expected: 1; Actual: 2; Style: 1/1/1

(MD029, ol-prefix)


52-52: Ordered list item prefix
Expected: 1; Actual: 3; Style: 1/1/1

(MD029, ol-prefix)


53-53: Ordered list item prefix
Expected: 1; Actual: 4; Style: 1/1/1

(MD029, ol-prefix)


54-54: Ordered list item prefix
Expected: 1; Actual: 5; Style: 1/1/1

(MD029, ol-prefix)


55-55: Ordered list item prefix
Expected: 1; Actual: 6; Style: 1/1/1

(MD029, ol-prefix)


56-56: Ordered list item prefix
Expected: 1; Actual: 7; Style: 1/1/1

(MD029, ol-prefix)


102-102: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


103-103: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


120-120: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


121-121: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


121-121: Trailing spaces
Expected: 0; Actual: 2

(MD009, no-trailing-spaces)


122-122: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


125-125: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


128-128: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


129-129: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


136-136: Ordered list item prefix
Expected: 1; Actual: 2; Style: 1/1/1

(MD029, ol-prefix)


137-137: Ordered list item prefix
Expected: 1; Actual: 3; Style: 1/1/1

(MD029, ol-prefix)


138-138: Ordered list item prefix
Expected: 1; Actual: 4; Style: 1/1/1

(MD029, ol-prefix)


139-139: Ordered list item prefix
Expected: 1; Actual: 5; Style: 1/1/1

(MD029, ol-prefix)


140-140: Ordered list item prefix
Expected: 1; Actual: 6; Style: 1/1/1

(MD029, ol-prefix)


141-141: Ordered list item prefix
Expected: 1; Actual: 7; Style: 1/1/1

(MD029, ol-prefix)


142-142: Ordered list item prefix
Expected: 1; Actual: 8; Style: 1/1/1

(MD029, ol-prefix)


149-149: Multiple headings with the same content

(MD024, no-duplicate-heading)


155-155: Multiple headings with the same content

(MD024, no-duplicate-heading)


158-158: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


159-159: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


160-160: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


161-161: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


162-162: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


164-164: Link fragments should be valid

(MD051, link-fragments)


182-182: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


183-183: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


184-184: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


185-185: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


188-188: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


189-189: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


190-190: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


191-191: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


194-194: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


216-216: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


217-217: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


218-218: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


227-227: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


228-228: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


229-229: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


230-230: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


231-231: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


234-234: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


235-235: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


236-236: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


237-237: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


240-240: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


276-276: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


277-277: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


278-278: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


279-279: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


285-285: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


286-286: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


301-301: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


302-302: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


316-316: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


317-317: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


366-366: Multiple headings with the same content

(MD024, no-duplicate-heading)


372-372: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


373-373: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


388-388: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


388-388: Multiple headings with the same content

(MD024, no-duplicate-heading)


389-389: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


403-403: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


404-404: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


418-418: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


419-419: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


434-434: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


435-435: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


475-475: Multiple headings with the same content

(MD024, no-duplicate-heading)


557-557: Multiple headings with the same content

(MD024, no-duplicate-heading)


563-563: Multiple headings with the same content

(MD024, no-duplicate-heading)


566-566: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


567-567: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


568-568: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


569-569: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


570-570: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


571-571: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


581-581: Ordered list item prefix
Expected: 1; Actual: 2; Style: 1/1/1

(MD029, ol-prefix)


582-582: Ordered list item prefix
Expected: 1; Actual: 3; Style: 1/1/1

(MD029, ol-prefix)


583-583: Ordered list item prefix
Expected: 1; Actual: 4; Style: 1/1/1

(MD029, ol-prefix)


584-584: Ordered list item prefix
Expected: 1; Actual: 5; Style: 1/1/1

(MD029, ol-prefix)


585-585: Ordered list item prefix
Expected: 1; Actual: 6; Style: 1/1/1

(MD029, ol-prefix)


586-586: Ordered list item prefix
Expected: 1; Actual: 7; Style: 1/1/1

(MD029, ol-prefix)


627-627: Multiple headings with the same content

(MD024, no-duplicate-heading)


807-807: Ordered list item prefix
Expected: 1; Actual: 2; Style: 1/1/1

(MD029, ol-prefix)


808-808: Ordered list item prefix
Expected: 1; Actual: 3; Style: 1/1/1

(MD029, ol-prefix)


809-809: Ordered list item prefix
Expected: 1; Actual: 4; Style: 1/1/1

(MD029, ol-prefix)


810-810: Ordered list item prefix
Expected: 1; Actual: 5; Style: 1/1/1

(MD029, ol-prefix)


811-811: Ordered list item prefix
Expected: 1; Actual: 6; Style: 1/1/1

(MD029, ol-prefix)


812-812: Ordered list item prefix
Expected: 1; Actual: 7; Style: 1/1/1

(MD029, ol-prefix)


816-816: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


817-817: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


818-818: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


819-819: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


820-820: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


821-821: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


822-822: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


827-827: Trailing spaces
Expected: 0; Actual: 2

(MD009, no-trailing-spaces)


828-828: Trailing spaces
Expected: 0; Actual: 1

(MD009, no-trailing-spaces)


828-828: Files should end with a single newline character

(MD047, single-trailing-newline)

docs/Data-flow.md

3-3: Files should end with a single newline character

(MD047, single-trailing-newline)

⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: Codacy Static Code Analysis
🔇 Additional comments (2)
docs/Data-flow.md (1)

1-3: Add trailing newline to comply with markdown standards.

The file is missing a trailing newline character at the end, which is a standard practice for text files.

Apply this diff:

 # Infrastructure Data flow
 
-![Data flow](assets/img/architecture.png?v=3)
+![Data flow](assets/img/architecture.png?v=3)
+

Please verify that the updated architecture image (assets/img/architecture.png?v=3) exists and reflects the updated AI model usage as described in the PR objective.

docs/documentation-and-coding-standards.md (1)

9-27: Verify table of contents link fragments are valid and resolvable.

Lines 22 and 164 reference link fragments (e.g., #test-templates-and-setup) that may not correspond to actual heading IDs in the document due to heading naming inconsistencies. Ensure all internal links in the table of contents point to valid section headings.

Confirm that all link fragments in the table of contents match the actual heading IDs. For example:

  • Does #test-templates-and-setup on line 22 correspond to a heading named "Test Templates and Setup"?
  • Does #fliplet-api-patterns on line 164 exist and is correctly formatted?

You may need to generate heading IDs that match the referenced fragments if they are missing.

Comment on lines +1 to +828
# Fliplet Documentation and Coding Standards

This document outlines the coding standards and documentation guidelines for Fliplet development, ensuring consistency across all APIs, components, and examples. These standards help developers write maintainable code and create documentation that both humans and AI systems can easily understand and implement.

## Table of Contents

1. [Documentation Standards](#documentation-standards)
2. [Development Environment Guidelines](#development-environment-guidelines)
3. [JavaScript Coding Standards](javascript-coding-standards.md)
- 3.1. [Modern JavaScript (ES6+) - Recommended](javascript-coding-standards.md#modern-javascript-es6---recommended)
- 3.2. [Legacy JavaScript (ES5) - Compatibility](javascript-coding-standards.md#legacy-javascript-es5---compatibility)
4. [Fliplet API Patterns](code-api-patterns.md)
- 4.1. [API Categories Overview](code-api-patterns.md#api-categories-overview)
- 4.2. [Connection and Initialization Patterns](code-api-patterns.md#connection-and-initialization-patterns)
- 4.3. [CRUD Operation Patterns](code-api-patterns.md#crud-operation-patterns-for-all-apis)
- 4.4. [Navigation Patterns](code-api-patterns.md#navigation-patterns)
- 4.5. [Communication Patterns](code-api-patterns.md#communication-patterns)
5. [Quick Reference Guide](#quick-reference-guide)
6. [Code Examples and Testing](#code-examples-and-testing)
- 6.1. [Complete Example Requirements](#complete-example-requirements)
- 6.2. [Asset Provision Standards](#asset-provision-standards)
- 6.3. [Test Templates and Setup](#test-templates-and-setup)
7. [Approved Libraries](approved-libraries.md)
- 7.1. [Available Libraries](approved-libraries.md#available-libraries)
- 7.2. [Library Usage Guidelines](approved-libraries.md#library-usage-guidelines)
- 7.3. [Performance Considerations](approved-libraries.md#performance-considerations)
- 7.4. [Custom Library Integration](approved-libraries.md#custom-library-integration)


## Documentation Standards

### Purpose and Importance

Documentation standards ensure that all Fliplet APIs are documented consistently, making it easier for developers to understand, implement, and maintain code. Good documentation serves multiple audiences: human developers learning the platform, experienced developers looking for quick reference, and AI systems that need to understand API functionality.

These standards prioritize **immediate usability** - every example should work when copied directly into an app, and every API should be clearly explained with its specific use cases.

### When to Use This Section

Use these documentation standards when:
- Writing API documentation for any Fliplet namespace
- Creating examples for components or helpers
- Documenting new features or updates
- Reviewing existing documentation for consistency

### Structure Requirements

All Fliplet API documentation must include:

1. **Clear Purpose Statement** - What the API does and when to use it
2. **Syntax Documentation** - Exact method signatures with parameter types
3. **Return Value Information** - What the method returns and in what format
4. **Complete Examples** - Working code that can be copied and tested immediately
5. **Required Assets** - Any files, data sources, or setup needed for examples
6. **Error Handling** - Common errors and how to handle them
7. **Environment Notes** - Differences between Studio and deployed app behavior

> **See also:** [Code Examples and Testing](#code-examples-and-testing) for detailed example requirements

### Standard Documentation Template

```markdown
### API Method Name

**Purpose:** Brief description of what this API method does
**Syntax:** `Fliplet.Namespace.methodName(param1, param2, options?)`
**Returns:** `Promise<ReturnType>` or `ReturnType`
**When to use:** Specific scenarios where this method is appropriate
**Environment:** Studio ✓ | App ✓ (or note restrictions)

#### Required Setup
- Data source: "ExampleData" with columns: Name, Email, Status
- Media folder: "TestAssets"
- Screen: "TestScreen" (if navigation examples)

#### Complete Example
```js
// Complete example with all setup and error handling
const demonstrateMethod = async () => {
try {
// 1. Setup (if needed)
const connection = await Fliplet.DataSources.connectByName("ExampleData");

// 2. Main operation
const result = await Fliplet.Namespace.methodName(param1, param2, {
option: 'value'
});

// 3. Handle result
console.log('Success:', result);
return result;
} catch (error) {
console.error('Error:', error.message);
throw error;
}
};

// Run example
demonstrateMethod().catch(console.error);
```

#### Test Data
```json
// Sample data for "ExampleData" data source
[
{
"Name": "John Smith",
"Email": "john@example.com",
"Status": "Active"
},
{
"Name": "Jane Doe",
"Email": "jane@example.com",
"Status": "Active"
}
]
```

**Parameters:**
- `param1` (Type): Description of parameter
- `param2` (Type): Description of parameter
- `options` (Object, optional): Configuration options

**Options:**
- `option` (String): Description of option

**Common Errors:**
- `404`: Resource not found - Check data source exists
- `403`: Access denied - Verify permissions

**See also:** [Error Handling Patterns](#error-handling-patterns)

# Documentation Principles

1. **Complete & Testable** - Every example must work immediately when copied
2. **Asset Provision** - Provide all required files, data, and setup instructions
3. **Environment Aware** - Note differences between Studio and deployed apps
4. **AI-Optimized** - Structure content for easy parsing by LLMs and AI tools
5. **Progressive Complexity** - Start simple, build to advanced patterns
6. **Real-World Focus** - Examples should reflect actual use cases
7. **Cross-Reference** - Link related methods and concepts
8. **Error Complete** - Include comprehensive error handling

> **Next:** Learn about [Development Environment Guidelines](#development-environment-guidelines)


## Development Environment Guidelines

### Purpose and Importance

Fliplet development happens in two distinct environments: **Fliplet Studio** (for building and configuring components) and **deployed apps** (for end-user functionality). Understanding these environments is crucial because different APIs are available in each context, and code behavior can vary significantly.

> **Key Concept:** Environment-aware development is essential for creating components that work correctly in both Studio configuration and app runtime contexts.

### When to Use This Section

Reference this section when:
- Writing code that needs to work in both Studio and apps
- Creating components that have configuration interfaces
- Building apps with user-facing functionality
- Debugging environment-specific issues
- Choosing appropriate APIs for your use case

> **See also:** [Fliplet API Patterns](#fliplet-api-patterns) for API-specific environment considerations

### Environment Comparison

| Aspect | Studio Environment | App Environment |
|--------|-------------------|-----------------|
| **Purpose** | Component configuration | User functionality |
| **APIs Available** | Widget, Studio, Helper | User, DataSources, Navigate, Device |
| **Context** | Development/Configuration | Runtime/Production |
| **User Type** | Developers/Admins | End Users |

### Fliplet Studio Development

**Environment:** Code running within Fliplet Studio interface

**Purpose:** Studio development is for creating and configuring components, themes, and app structure. This is where developers build the tools that end-users will interact with in the published app.

**When to use Studio APIs:**
- Building component configuration interfaces
- Creating data source selectors
- Setting up screen navigation options
- Configuring app themes and layouts

**Characteristics:**
- Full access to Studio APIs
- Live preview capabilities
- Component configuration interface
- Limited to Studio context

**Example - Studio Component Code:**
```js
// Studio component initialization
Fliplet.Widget.onSaveRequest(() => {
// Get configuration from UI
const config = {
dataSource: $('#select-datasource').val(),
template: $('#select-template').val(),
options: {
showHeader: $('#show-header').is(':checked'),
itemsPerPage: parseInt($('#items-per-page').val()) || 10
}
};

// Save configuration
Fliplet.Widget.save(config).then(() => {
console.log('Component configured successfully');
Fliplet.Widget.complete();
});
});
```

**Studio-Only APIs:**
- `Fliplet.Widget.*` - Component lifecycle management
- `Fliplet.Studio.*` - Studio interface interactions
- `Fliplet.Helper.*` - Helper development tools

### Deployed App Development

**Environment:** Code running in published Fliplet apps

**Purpose:** App development is for creating end-user functionality - the actual features that users interact with when using your published app. This includes user authentication, data management, navigation, and device features.

**When to use App APIs:**
- User login and authentication
- Reading and writing app data
- Navigating between screens
- Sending notifications
- Accessing device features (camera, GPS, etc.)

**Characteristics:**
- Full runtime API access
- User interaction capabilities
- Data persistence
- Device-specific features

**Example - App Runtime Code:**
```js
// App initialization code
Fliplet.Hooks.on('flAppReady', async () => {
try {
// Initialize app features
await initializeUserSession();
await loadUserPreferences();
await setupNotifications();

console.log('App initialized successfully');
} catch (error) {
console.error('App initialization failed:', error);
}
});

const initializeUserSession = async () => {
// Check if user is logged in
const user = await Fliplet.User.getCachedSession();

if (user) {
console.log('User logged in:', user.email);
await loadUserData(user.id);
} else {
console.log('No user session found');
// Redirect to login if required
}
};

// App-specific APIs available:
// - Fliplet.User.*
// - Fliplet.DataSources.*
// - Fliplet.Navigate.*
// - Device APIs (Camera, GPS, etc.)
```

**App-Only APIs:**
- `Fliplet.User.*` - User authentication and management
- `Fliplet.Device.*` - Device-specific functionality
- `Fliplet.Cache.*` - Local data caching
- `Fliplet.Hooks.*` - App lifecycle events

### Environment-Specific Code Examples

> **Note:** These examples demonstrate the key differences between Studio and App development patterns.

#### Data Source Access
```js
// STUDIO: Component configuration
Fliplet.Widget.onSaveRequest(() => {
const selectedDataSource = $('#datasource-selector').val();
Fliplet.Widget.save({ dataSourceId: selectedDataSource });
});

// APP: Runtime data access
const loadAppData = async () => {
const connection = await Fliplet.DataSources.connectByName("AppData");
const records = await connection.find();
return records;
};
```

#### Navigation Handling
```js
// STUDIO: Configure navigation target
const configureNavigation = () => {
const targetScreen = $('#screen-selector').val();
return { action: 'screen', page: targetScreen };
};

// APP: Execute navigation
const navigateToScreen = async (screenName) => {
await Fliplet.Navigate.screen(screenName);
console.log(`Navigated to ${screenName}`);
};
```

#### User Management
```js
// STUDIO: Not available - user management is app-only

// APP: User authentication
const handleUserLogin = async (email, password) => {
try {
const user = await Fliplet.User.login({ email, password });
console.log('User logged in:', user);
return user;
} catch (error) {
console.error('Login failed:', error.message);
throw error;
}
};
```

### Environment Detection

```js
// Detect current environment
const detectEnvironment = () => {
const isStudio = typeof Fliplet.Widget !== 'undefined';
const isApp = typeof Fliplet.User !== 'undefined';

return {
isStudio,
isApp,
environment: isStudio ? 'studio' : 'app'
};
};

// Use environment-specific code
const initializeBasedOnEnvironment = async () => {
const { isStudio, isApp } = detectEnvironment();

if (isStudio) {
// Studio-specific initialization
console.log('Running in Studio environment');
setupComponentConfiguration();
} else if (isApp) {
// App-specific initialization
console.log('Running in App environment');
await initializeAppFeatures();
}
};
```

## Quick Reference Guide

### Purpose and Importance

This quick reference provides immediate access to the most commonly used Fliplet patterns, APIs, and code snippets. Use this section for fast lookup during development.

### Common API Patterns

#### Data Sources
```js
// Connect and query
const connection = await Fliplet.DataSources.connectByName("DataSourceName");
const records = await connection.find({ where: { Status: 'Active' }, limit: 50 });

// Insert record
const newRecord = await connection.insert({ Name: 'John', Email: 'john@example.com' });

// Update record
const updated = await connection.update(recordId, { Status: 'Updated' });

// Delete record
await connection.removeById(recordId);
```

#### User Management
```js
// Login
const user = await Fliplet.User.login({ email: 'user@example.com', password: 'password' });

// Get current user
const currentUser = await Fliplet.User.getCachedSession();

// Logout
await Fliplet.User.logout();

// Update profile
const updatedUser = await Fliplet.User.update({ firstName: 'John' });
```

#### Navigation
```js
// Navigate to screen
await Fliplet.Navigate.screen('ScreenName');

// Navigate with data
await Fliplet.Navigate.screen('ScreenName', { userId: 123 });

// Navigate to URL
await Fliplet.Navigate.url('https://example.com');

// Go back
await Fliplet.Navigate.back();
```

#### Media Management
```js
// Get folders
const folders = await Fliplet.Media.Folders.get();

// Upload file
const uploadedFile = await Fliplet.Media.Files.upload({
folderId: folderId,
file: fileObject,
fileName: 'example.jpg'
});

// Get files
const files = await Fliplet.Media.Files.get({ folderId: folderId });
```

#### Communication
```js
// Send email
await Fliplet.Communicate.sendEmail({
to: [{ email: 'user@example.com', name: 'User Name' }],
subject: 'Subject',
html: '<p>Message content</p>'
});

// Create notification
await Fliplet.Notifications.create({
title: 'Notification Title',
message: 'Notification message',
userId: userId
});
```

### Error Handling Patterns

```js
// Basic try-catch
try {
const result = await someFlipletAPI();
console.log('Success:', result);
} catch (error) {
console.error('Error:', error.message);
}

// With retry logic
const withRetry = async (operation, maxRetries = 3) => {
for (let attempt = 1; attempt <= maxRetries; attempt++) {
try {
return await operation();
} catch (error) {
if (attempt === maxRetries) throw error;
await new Promise(resolve => setTimeout(resolve, 1000 * attempt));
}
}
};
```

### Environment Detection

```js
// Detect environment
const isStudio = typeof Fliplet.Widget !== 'undefined';
const isApp = typeof Fliplet.User !== 'undefined';

// Environment-specific code
if (isStudio) {
// Studio-specific logic
Fliplet.Widget.onSaveRequest(() => {
// Component configuration
});
} else {
// App-specific logic
Fliplet.Hooks.on('flAppReady', () => {
// App initialization
});
}
```

### Common Utility Functions

```js
// Delay function
const delay = (ms) => new Promise(resolve => setTimeout(resolve, ms));

// Format date
const formatDate = (date) => moment(date).format('YYYY-MM-DD');

// Group array by property
const groupBy = (array, key) => {
return array.reduce((groups, item) => {
const group = item[key];
groups[group] = groups[group] || [];
groups[group].push(item);
return groups;
}, {});
};

// Debounce function
const debounce = (func, wait) => {
let timeout;
return function executedFunction(...args) {
const later = () => {
clearTimeout(timeout);
func(...args);
};
clearTimeout(timeout);
timeout = setTimeout(later, wait);
};
};
```

### Performance Optimization

```js
// Efficient queries
const optimizedQuery = await connection.find({
where: {
$filters: [
{ column: 'Status', condition: '==', value: 'Active' },
{ column: 'Department', condition: '==', value: 'Engineering' }
]
},
attributes: ['Name', 'Email'], // Limit returned fields
limit: 50,
order: [['Name', 'ASC']]
});

// Pagination
const loadPage = async (page = 0, pageSize = 20) => {
return connection.find({
limit: pageSize,
offset: page * pageSize,
includePagination: true
});
};
```

## Code Examples and Testing

### Purpose and Importance

Complete examples and comprehensive testing are the foundation of good documentation and reliable code. They eliminate guesswork, reduce support requests, and enable developers to quickly prototype and test functionality. Every code example should be a working demonstration that developers can immediately run in their apps.

> **Key Principle:** Every example must work immediately when copied - no missing dependencies, no undefined variables, no incomplete setup.

### When to Use This Section

Reference this section when:
- Writing any code example in documentation
- Creating tutorial content
- Building component examples
- Testing API functionality
- Setting up development environments
- Creating reusable code templates

> **See also:** [Documentation Standards](#documentation-standards) for documentation structure requirements


### Complete Example Requirements

Every code example in Fliplet documentation must include:

1. **Full Setup Code** - All initialization and connection code
2. **Error Handling** - Try/catch blocks with meaningful error messages
3. **Console Output** - Logging for debugging and verification
4. **Asset References** - Clear identification of required resources
5. **Usage Instructions** - How to run the example
6. **Expected Results** - What the output should look like
7. **Environment Notes** - Studio vs App compatibility

#### Example Structure Template

```js
// Complete example template
const completeExampleTemplate = async () => {
try {
// 1. Environment check
console.log('Environment:', typeof Fliplet.Widget !== 'undefined' ? 'Studio' : 'App');

// 2. Setup phase
console.log('Setting up...');
const connection = await Fliplet.DataSources.connectByName("ExampleData");

// 3. Main operation
console.log('Performing operation...');
const result = await connection.find({ limit: 10 });

// 4. Results
console.log('Operation completed:', result.length, 'records found');
return result;

} catch (error) {
// 5. Error handling
console.error('Example failed:', error.message);
throw error;
}
};

// Usage
completeExampleTemplate()
.then(result => console.log('Success:', result))
.catch(error => console.error('Failed:', error));
```


### Asset Provision Standards

When examples require assets, provide complete setup instructions and code:

#### Data Sources

```js
// Create test data source programmatically
const createTestDataSource = async () => {
const dataSource = await Fliplet.DataSources.create({
name: 'TestUsers',
columns: ['Name', 'Email', 'Department', 'Status'],
entries: [
{
Name: 'John Smith',
Email: 'john@company.com',
Department: 'Engineering',
Status: 'Active'
},
{
Name: 'Sarah Jones',
Email: 'sarah@company.com',
Department: 'Design',
Status: 'Active'
}
]
});

console.log('Test data source created:', dataSource.name);
return dataSource;
};

// Alternative: Manual setup instructions
const setupDataSourceManually = () => {
console.log(`
Manual Data Source Setup:
1. Go to Data Sources in Fliplet Studio
2. Create new data source named "TestUsers"
3. Add columns: Name, Email, Department, Status
4. Import the provided CSV data
`);
};
```

#### Media Files

```js
// Provide sample files or creation instructions
const createSampleImage = () => {
// For testing, create a simple canvas image
const canvas = document.createElement('canvas');
canvas.width = 100;
canvas.height = 100;
const ctx = canvas.getContext('2d');
ctx.fillStyle = '#4CAF50';
ctx.fillRect(0, 0, 100, 100);
ctx.fillStyle = 'white';
ctx.font = '16px Arial';
ctx.fillText('TEST', 30, 55);

return new Promise(resolve => {
canvas.toBlob(resolve, 'image/png');
});
};

// Usage in examples
const uploadTestImage = async () => {
const testFile = await createSampleImage();
const folders = await Fliplet.Media.Folders.get();
const testFolder = folders.find(f => f.name === 'TestAssets');

return Fliplet.Media.Files.upload({
folderId: testFolder.id,
file: testFile,
fileName: 'test-image.png'
});
};
```

#### Screen Navigation Setup

```js
// Provide screen setup for navigation examples
const setupTestScreens = () => {
// Note: In Studio, create screens manually
const requiredScreens = [
'Home', // Main landing screen
'Profile', // User profile screen
'Settings', // App settings screen
'Dashboard' // Data dashboard screen
];

console.log('Required screens for navigation examples:');
requiredScreens.forEach(screen => {
console.log(`- ${screen}: Create in Fliplet Studio`);
});

return requiredScreens;
};

// Navigation example with screen validation
const safeNavigateToScreen = async (screenName) => {
try {
await Fliplet.Navigate.screen(screenName);
console.log(`Successfully navigated to ${screenName}`);
} catch (error) {
console.error(`Navigation failed to ${screenName}:`, error.message);
console.log('Ensure the screen exists in your app');
throw error;
}
};
```

#### Test Data Templates

```js
// Sample data templates for different use cases

// User profiles test data
const userProfilesTestData = [
{
Name: 'John Smith',
Email: 'john@company.com',
Department: 'Engineering',
Office: 'London',
Status: 'Active',
JoinDate: '2023-01-15',
Preferences: JSON.stringify({ theme: 'dark', notifications: true })
},
{
Name: 'Sarah Johnson',
Email: 'sarah@company.com',
Department: 'Design',
Office: 'New York',
Status: 'Active',
JoinDate: '2023-02-20',
Preferences: JSON.stringify({ theme: 'light', notifications: false })
},
{
Name: 'Mike Wilson',
Email: 'mike@company.com',
Department: 'Marketing',
Office: 'Berlin',
Status: 'Inactive',
JoinDate: '2023-03-10',
Preferences: JSON.stringify({ theme: 'auto', notifications: true })
}
];

// App configuration test data
const appConfigTestData = {
appName: 'Test Application',
version: '1.0.0',
theme: {
primaryColor: '#4CAF50',
secondaryColor: '#2196F3',
fontFamily: 'Arial, sans-serif'
},
features: {
userManagement: true,
notifications: true,
dataSync: true,
offline: false
}
};

// Sample CSV data for import testing
const sampleCSVData = `Name,Email,Department,Office,Status,JoinDate
John Smith,john@company.com,Engineering,London,Active,2023-01-15
Sarah Johnson,sarah@company.com,Design,New York,Active,2023-02-20
Mike Wilson,mike@company.com,Marketing,Berlin,Active,2023-03-10
Lisa Garcia,lisa@company.com,Sales,Paris,Active,2023-04-05
Tom Anderson,tom@company.com,Engineering,Remote,Inactive,2023-05-12`;
```

## Conclusion

These updated standards ensure consistency, maintainability, and optimal performance across all Fliplet development. The reorganized structure provides better navigation and reduces duplication while maintaining comprehensive coverage.

### Development Principles

When developing with Fliplet, remember to:

1. **Prioritize Modern JavaScript** - Use ES6+ features unless legacy support is required
2. **Include Complete Examples** - Every code sample should work immediately when copied
3. **Handle Errors Gracefully** - Implement comprehensive error handling with meaningful messages
4. **Consider Environment Context** - Write appropriate code for Studio vs App environments
5. **Follow Performance Best Practices** - Optimize queries, implement pagination, and minimize data transfer
6. **Use Cross-References** - Link related concepts and provide navigation aids
7. **Test Thoroughly** - Validate functionality across different environments and use cases

### Quick Navigation

- **Getting Started:** [Documentation Standards](#documentation-standards)
- **Environment Setup:** [Development Environment Guidelines](#development-environment-guidelines)
- **Coding Patterns:** [JavaScript Coding Standards](javascript-coding-standards.md)
- **API Usage:** [Fliplet API Patterns](code-api-patterns.md)
- **Quick Lookup:** [Quick Reference Guide](#quick-reference-guide)
- **Testing:** [Code Examples and Testing](#code-examples-and-testing)
- **Libraries:** [Approved Libraries](approved-libraries.md)

For questions or clarifications, refer to the [Fliplet Developer Documentation](https://developers.fliplet.com/) or contact the development team.


*Document Version: 2.0 - Reorganized and Enhanced*
*Last Updated: 2024* No newline at end of file
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion | 🟠 Major

Comprehensive documentation standards file—good content and structure.

Overall, the documentation file is well-structured and comprehensive, covering important development standards, environment awareness, code patterns, and testing guidelines. The code examples are complete with proper error handling and environment-specific considerations, which aligns well with the PR objective to establish unified standards.

The primary concerns are markdown formatting consistency rather than content quality. Once formatting issues are resolved, this will serve as a valuable reference for Fliplet developers.

After addressing the formatting issues above, this document will be production-ready.

🧰 Tools
🪛 LanguageTool

[grammar] ~179-~179: Did you mean the adverb/preposition “within”?
Context: ... the tools that end-users will interact with in the published app. **When to use Studi...

(WITH_IN)

🪛 markdownlint-cli2 (0.18.1)

8-8: Ordered list item prefix
Expected: 1; Actual: 2; Style: 1/1/1

(MD029, ol-prefix)


9-9: Ordered list item prefix
Expected: 1; Actual: 3; Style: 1/1/1

(MD029, ol-prefix)


12-12: Ordered list item prefix
Expected: 1; Actual: 4; Style: 1/1/1

(MD029, ol-prefix)


18-18: Ordered list item prefix
Expected: 1; Actual: 5; Style: 1/1/1

(MD029, ol-prefix)


19-19: Ordered list item prefix
Expected: 1; Actual: 6; Style: 1/1/1

(MD029, ol-prefix)


22-22: Link fragments should be valid

(MD051, link-fragments)


23-23: Ordered list item prefix
Expected: 1; Actual: 7; Style: 1/1/1

(MD029, ol-prefix)


41-41: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


42-42: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


43-43: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


44-44: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


51-51: Ordered list item prefix
Expected: 1; Actual: 2; Style: 1/1/1

(MD029, ol-prefix)


52-52: Ordered list item prefix
Expected: 1; Actual: 3; Style: 1/1/1

(MD029, ol-prefix)


53-53: Ordered list item prefix
Expected: 1; Actual: 4; Style: 1/1/1

(MD029, ol-prefix)


54-54: Ordered list item prefix
Expected: 1; Actual: 5; Style: 1/1/1

(MD029, ol-prefix)


55-55: Ordered list item prefix
Expected: 1; Actual: 6; Style: 1/1/1

(MD029, ol-prefix)


56-56: Ordered list item prefix
Expected: 1; Actual: 7; Style: 1/1/1

(MD029, ol-prefix)


102-102: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


103-103: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


120-120: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


121-121: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


121-121: Trailing spaces
Expected: 0; Actual: 2

(MD009, no-trailing-spaces)


122-122: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


125-125: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


128-128: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


129-129: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


136-136: Ordered list item prefix
Expected: 1; Actual: 2; Style: 1/1/1

(MD029, ol-prefix)


137-137: Ordered list item prefix
Expected: 1; Actual: 3; Style: 1/1/1

(MD029, ol-prefix)


138-138: Ordered list item prefix
Expected: 1; Actual: 4; Style: 1/1/1

(MD029, ol-prefix)


139-139: Ordered list item prefix
Expected: 1; Actual: 5; Style: 1/1/1

(MD029, ol-prefix)


140-140: Ordered list item prefix
Expected: 1; Actual: 6; Style: 1/1/1

(MD029, ol-prefix)


141-141: Ordered list item prefix
Expected: 1; Actual: 7; Style: 1/1/1

(MD029, ol-prefix)


142-142: Ordered list item prefix
Expected: 1; Actual: 8; Style: 1/1/1

(MD029, ol-prefix)


149-149: Multiple headings with the same content

(MD024, no-duplicate-heading)


155-155: Multiple headings with the same content

(MD024, no-duplicate-heading)


158-158: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


159-159: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


160-160: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


161-161: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


162-162: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


164-164: Link fragments should be valid

(MD051, link-fragments)


182-182: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


183-183: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


184-184: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


185-185: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


188-188: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


189-189: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


190-190: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


191-191: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


194-194: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


216-216: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


217-217: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


218-218: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


227-227: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


228-228: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


229-229: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


230-230: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


231-231: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


234-234: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


235-235: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


236-236: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


237-237: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


240-240: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


276-276: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


277-277: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


278-278: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


279-279: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


285-285: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


286-286: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


301-301: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


302-302: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


316-316: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


317-317: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


366-366: Multiple headings with the same content

(MD024, no-duplicate-heading)


372-372: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


373-373: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


388-388: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


388-388: Multiple headings with the same content

(MD024, no-duplicate-heading)


389-389: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


403-403: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


404-404: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


418-418: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


419-419: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


434-434: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


435-435: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


475-475: Multiple headings with the same content

(MD024, no-duplicate-heading)


557-557: Multiple headings with the same content

(MD024, no-duplicate-heading)


563-563: Multiple headings with the same content

(MD024, no-duplicate-heading)


566-566: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


567-567: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


568-568: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


569-569: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


570-570: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


571-571: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


581-581: Ordered list item prefix
Expected: 1; Actual: 2; Style: 1/1/1

(MD029, ol-prefix)


582-582: Ordered list item prefix
Expected: 1; Actual: 3; Style: 1/1/1

(MD029, ol-prefix)


583-583: Ordered list item prefix
Expected: 1; Actual: 4; Style: 1/1/1

(MD029, ol-prefix)


584-584: Ordered list item prefix
Expected: 1; Actual: 5; Style: 1/1/1

(MD029, ol-prefix)


585-585: Ordered list item prefix
Expected: 1; Actual: 6; Style: 1/1/1

(MD029, ol-prefix)


586-586: Ordered list item prefix
Expected: 1; Actual: 7; Style: 1/1/1

(MD029, ol-prefix)


627-627: Multiple headings with the same content

(MD024, no-duplicate-heading)


807-807: Ordered list item prefix
Expected: 1; Actual: 2; Style: 1/1/1

(MD029, ol-prefix)


808-808: Ordered list item prefix
Expected: 1; Actual: 3; Style: 1/1/1

(MD029, ol-prefix)


809-809: Ordered list item prefix
Expected: 1; Actual: 4; Style: 1/1/1

(MD029, ol-prefix)


810-810: Ordered list item prefix
Expected: 1; Actual: 5; Style: 1/1/1

(MD029, ol-prefix)


811-811: Ordered list item prefix
Expected: 1; Actual: 6; Style: 1/1/1

(MD029, ol-prefix)


812-812: Ordered list item prefix
Expected: 1; Actual: 7; Style: 1/1/1

(MD029, ol-prefix)


816-816: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


817-817: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


818-818: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


819-819: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


820-820: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


821-821: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


822-822: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


827-827: Trailing spaces
Expected: 0; Actual: 2

(MD009, no-trailing-spaces)


828-828: Trailing spaces
Expected: 0; Actual: 1

(MD009, no-trailing-spaces)


828-828: Files should end with a single newline character

(MD047, single-trailing-newline)

🤖 Prompt for AI Agents
In docs/documentation-and-coding-standards.md around lines 1 to 828, the
reviewer flagged inconsistent Markdown formatting (mixed heading levels,
broken/unnamed code fences, inconsistent tables/lists, and potentially incorrect
relative links) — fix by normalizing heading levels and hierarchy, convert all
inline or indented code to fenced triple-backtick blocks with language tags,
ensure tables and lists are properly formatted and aligned, verify and correct
all relative links/anchors (update filenames or anchors to match target files),
remove any stray HTML or misused blockquotes, and run a Markdown linter (e.g.,
markdownlint) to catch and resolve remaining style violations before committing.

Comment on lines +1 to +30
# Fliplet Documentation and Coding Standards

This document outlines the coding standards and documentation guidelines for Fliplet development, ensuring consistency across all APIs, components, and examples. These standards help developers write maintainable code and create documentation that both humans and AI systems can easily understand and implement.

## Table of Contents

1. [Documentation Standards](#documentation-standards)
2. [Development Environment Guidelines](#development-environment-guidelines)
3. [JavaScript Coding Standards](javascript-coding-standards.md)
- 3.1. [Modern JavaScript (ES6+) - Recommended](javascript-coding-standards.md#modern-javascript-es6---recommended)
- 3.2. [Legacy JavaScript (ES5) - Compatibility](javascript-coding-standards.md#legacy-javascript-es5---compatibility)
4. [Fliplet API Patterns](code-api-patterns.md)
- 4.1. [API Categories Overview](code-api-patterns.md#api-categories-overview)
- 4.2. [Connection and Initialization Patterns](code-api-patterns.md#connection-and-initialization-patterns)
- 4.3. [CRUD Operation Patterns](code-api-patterns.md#crud-operation-patterns-for-all-apis)
- 4.4. [Navigation Patterns](code-api-patterns.md#navigation-patterns)
- 4.5. [Communication Patterns](code-api-patterns.md#communication-patterns)
5. [Quick Reference Guide](#quick-reference-guide)
6. [Code Examples and Testing](#code-examples-and-testing)
- 6.1. [Complete Example Requirements](#complete-example-requirements)
- 6.2. [Asset Provision Standards](#asset-provision-standards)
- 6.3. [Test Templates and Setup](#test-templates-and-setup)
7. [Approved Libraries](approved-libraries.md)
- 7.1. [Available Libraries](approved-libraries.md#available-libraries)
- 7.2. [Library Usage Guidelines](approved-libraries.md#library-usage-guidelines)
- 7.3. [Performance Considerations](approved-libraries.md#performance-considerations)
- 7.4. [Custom Library Integration](approved-libraries.md#custom-library-integration)


## Documentation Standards
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion | 🟠 Major

Resolve ordered list formatting to use consistent 1/1/1 prefix style.

The table of contents uses inconsistent numbering (2, 3, 4, 5, 6, 7 for sublists) which violates markdown linting standards. Use the 1/1/1 prefix style (all list items numbered as 1) for consistency across markdown.

Apply this diff to the table of contents:

 ## Table of Contents
 
-1. [Documentation Standards](#documentation-standards)
-2. [Development Environment Guidelines](#development-environment-guidelines)
-3. [JavaScript Coding Standards](javascript-coding-standards.md)
-   - 3.1. [Modern JavaScript (ES6+) - Recommended](javascript-coding-standards.md#modern-javascript-es6---recommended)
-   - 3.2. [Legacy JavaScript (ES5) - Compatibility](javascript-coding-standards.md#legacy-javascript-es5---compatibility)
-4. [Fliplet API Patterns](code-api-patterns.md)
-   - 4.1. [API Categories Overview](code-api-patterns.md#api-categories-overview)
-   - 4.2. [Connection and Initialization Patterns](code-api-patterns.md#connection-and-initialization-patterns)
-   - 4.3. [CRUD Operation Patterns](code-api-patterns.md#crud-operation-patterns-for-all-apis)
-   - 4.4. [Navigation Patterns](code-api-patterns.md#navigation-patterns)
-   - 4.5. [Communication Patterns](code-api-patterns.md#communication-patterns)
-5. [Quick Reference Guide](#quick-reference-guide)
-6. [Code Examples and Testing](#code-examples-and-testing)
-   - 6.1. [Complete Example Requirements](#complete-example-requirements)
-   - 6.2. [Asset Provision Standards](#asset-provision-standards)
-   - 6.3. [Test Templates and Setup](#test-templates-and-setup)
-7. [Approved Libraries](approved-libraries.md)
-   - 7.1. [Available Libraries](approved-libraries.md#available-libraries)
-   - 7.2. [Library Usage Guidelines](approved-libraries.md#library-usage-guidelines)
-   - 7.3. [Performance Considerations](approved-libraries.md#performance-considerations)
-   - 7.4. [Custom Library Integration](approved-libraries.md#custom-library-integration)
+1. [Documentation Standards](#documentation-standards)
+1. [Development Environment Guidelines](#development-environment-guidelines)
+1. [JavaScript Coding Standards](javascript-coding-standards.md)
+   1. [Modern JavaScript (ES6+) - Recommended](javascript-coding-standards.md#modern-javascript-es6---recommended)
+   1. [Legacy JavaScript (ES5) - Compatibility](javascript-coding-standards.md#legacy-javascript-es5---compatibility)
+1. [Fliplet API Patterns](code-api-patterns.md)
+   1. [API Categories Overview](code-api-patterns.md#api-categories-overview)
+   1. [Connection and Initialization Patterns](code-api-patterns.md#connection-and-initialization-patterns)
+   1. [CRUD Operation Patterns](code-api-patterns.md#crud-operation-patterns-for-all-apis)
+   1. [Navigation Patterns](code-api-patterns.md#navigation-patterns)
+   1. [Communication Patterns](code-api-patterns.md#communication-patterns)
+1. [Quick Reference Guide](#quick-reference-guide)
+1. [Code Examples and Testing](#code-examples-and-testing)
+   1. [Complete Example Requirements](#complete-example-requirements)
+   1. [Asset Provision Standards](#asset-provision-standards)
+   1. [Test Templates and Setup](#test-templates-and-setup)
+1. [Approved Libraries](approved-libraries.md)
+   1. [Available Libraries](approved-libraries.md#available-libraries)
+   1. [Library Usage Guidelines](approved-libraries.md#library-usage-guidelines)
+   1. [Performance Considerations](approved-libraries.md#performance-considerations)
+   1. [Custom Library Integration](approved-libraries.md#custom-library-integration)
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
# Fliplet Documentation and Coding Standards
This document outlines the coding standards and documentation guidelines for Fliplet development, ensuring consistency across all APIs, components, and examples. These standards help developers write maintainable code and create documentation that both humans and AI systems can easily understand and implement.
## Table of Contents
1. [Documentation Standards](#documentation-standards)
2. [Development Environment Guidelines](#development-environment-guidelines)
3. [JavaScript Coding Standards](javascript-coding-standards.md)
- 3.1. [Modern JavaScript (ES6+) - Recommended](javascript-coding-standards.md#modern-javascript-es6---recommended)
- 3.2. [Legacy JavaScript (ES5) - Compatibility](javascript-coding-standards.md#legacy-javascript-es5---compatibility)
4. [Fliplet API Patterns](code-api-patterns.md)
- 4.1. [API Categories Overview](code-api-patterns.md#api-categories-overview)
- 4.2. [Connection and Initialization Patterns](code-api-patterns.md#connection-and-initialization-patterns)
- 4.3. [CRUD Operation Patterns](code-api-patterns.md#crud-operation-patterns-for-all-apis)
- 4.4. [Navigation Patterns](code-api-patterns.md#navigation-patterns)
- 4.5. [Communication Patterns](code-api-patterns.md#communication-patterns)
5. [Quick Reference Guide](#quick-reference-guide)
6. [Code Examples and Testing](#code-examples-and-testing)
- 6.1. [Complete Example Requirements](#complete-example-requirements)
- 6.2. [Asset Provision Standards](#asset-provision-standards)
- 6.3. [Test Templates and Setup](#test-templates-and-setup)
7. [Approved Libraries](approved-libraries.md)
- 7.1. [Available Libraries](approved-libraries.md#available-libraries)
- 7.2. [Library Usage Guidelines](approved-libraries.md#library-usage-guidelines)
- 7.3. [Performance Considerations](approved-libraries.md#performance-considerations)
- 7.4. [Custom Library Integration](approved-libraries.md#custom-library-integration)
## Documentation Standards
# Fliplet Documentation and Coding Standards
This document outlines the coding standards and documentation guidelines for Fliplet development, ensuring consistency across all APIs, components, and examples. These standards help developers write maintainable code and create documentation that both humans and AI systems can easily understand and implement.
## Table of Contents
1. [Documentation Standards](#documentation-standards)
1. [Development Environment Guidelines](#development-environment-guidelines)
1. [JavaScript Coding Standards](javascript-coding-standards.md)
1. [Modern JavaScript (ES6+) - Recommended](javascript-coding-standards.md#modern-javascript-es6---recommended)
1. [Legacy JavaScript (ES5) - Compatibility](javascript-coding-standards.md#legacy-javascript-es5---compatibility)
1. [Fliplet API Patterns](code-api-patterns.md)
1. [API Categories Overview](code-api-patterns.md#api-categories-overview)
1. [Connection and Initialization Patterns](code-api-patterns.md#connection-and-initialization-patterns)
1. [CRUD Operation Patterns](code-api-patterns.md#crud-operation-patterns-for-all-apis)
1. [Navigation Patterns](code-api-patterns.md#navigation-patterns)
1. [Communication Patterns](code-api-patterns.md#communication-patterns)
1. [Quick Reference Guide](#quick-reference-guide)
1. [Code Examples and Testing](#code-examples-and-testing)
1. [Complete Example Requirements](#complete-example-requirements)
1. [Asset Provision Standards](#asset-provision-standards)
1. [Test Templates and Setup](#test-templates-and-setup)
1. [Approved Libraries](approved-libraries.md)
1. [Available Libraries](approved-libraries.md#available-libraries)
1. [Library Usage Guidelines](approved-libraries.md#library-usage-guidelines)
1. [Performance Considerations](approved-libraries.md#performance-considerations)
1. [Custom Library Integration](approved-libraries.md#custom-library-integration)
## Documentation Standards
🧰 Tools
🪛 markdownlint-cli2 (0.18.1)

8-8: Ordered list item prefix
Expected: 1; Actual: 2; Style: 1/1/1

(MD029, ol-prefix)


9-9: Ordered list item prefix
Expected: 1; Actual: 3; Style: 1/1/1

(MD029, ol-prefix)


12-12: Ordered list item prefix
Expected: 1; Actual: 4; Style: 1/1/1

(MD029, ol-prefix)


18-18: Ordered list item prefix
Expected: 1; Actual: 5; Style: 1/1/1

(MD029, ol-prefix)


19-19: Ordered list item prefix
Expected: 1; Actual: 6; Style: 1/1/1

(MD029, ol-prefix)


22-22: Link fragments should be valid

(MD051, link-fragments)


23-23: Ordered list item prefix
Expected: 1; Actual: 7; Style: 1/1/1

(MD029, ol-prefix)

🤖 Prompt for AI Agents
docs/documentation-and-coding-standards.md lines 1-30: The Table of Contents
uses sequential numbering for nested items which violates the requested markdown
linting rule requiring the "1/1/1" ordered-list style; update every ordered list
entry within the TOC so each line starts with "1." (including nested
subsections), ensuring consistent numbering across all levels while preserving
the existing text and links.

Comment on lines +40 to +44
Use these documentation standards when:
- Writing API documentation for any Fliplet namespace
- Creating examples for components or helpers
- Documenting new features or updates
- Reviewing existing documentation for consistency
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion | 🟠 Major

Correct unordered list indentation to comply with markdown standards.

Lines 40–44 and similar unordered lists throughout the document lack proper indentation (expected 2 spaces, actual 0). Standardise list indentation across the document to improve rendering consistency.

Apply this diff as an example:

 ### When to Use This Section
 
 Use these documentation standards when:
-
-Use these documentation standards when:
-- Writing API documentation for any Fliplet namespace
-- Creating examples for components or helpers
-- Documenting new features or updates
-- Reviewing existing documentation for consistency
+- Writing API documentation for any Fliplet namespace
+- Creating examples for components or helpers
+- Documenting new features or updates
+- Reviewing existing documentation for consistency

Please apply similar indentation corrections to all unordered lists throughout the file (lines 41–44, 120–122, 125, 128–129, 158–162, 182–185, 188–191, 216–218, 227–231, 234–237, 276–279, 566–571, 816–822).

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
Use these documentation standards when:
- Writing API documentation for any Fliplet namespace
- Creating examples for components or helpers
- Documenting new features or updates
- Reviewing existing documentation for consistency
Use these documentation standards when:
- Writing API documentation for any Fliplet namespace
- Creating examples for components or helpers
- Documenting new features or updates
- Reviewing existing documentation for consistency
🧰 Tools
🪛 markdownlint-cli2 (0.18.1)

41-41: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


42-42: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


43-43: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


44-44: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)

Comment on lines +820 to +828
- **Quick Lookup:** [Quick Reference Guide](#quick-reference-guide)
- **Testing:** [Code Examples and Testing](#code-examples-and-testing)
- **Libraries:** [Approved Libraries](approved-libraries.md)

For questions or clarifications, refer to the [Fliplet Developer Documentation](https://developers.fliplet.com/) or contact the development team.


*Document Version: 2.0 - Reorganized and Enhanced*
*Last Updated: 2024* No newline at end of file
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion | 🟠 Major

Standardise markdown file ending and remove trailing spaces.

The file is missing a trailing newline (lines 827–828 have trailing spaces and the file doesn't end with a newline). Files should end with a single newline character, and trailing spaces should be removed.

Apply this diff to the end of the file:

 For questions or clarifications, refer to the [Fliplet Developer Documentation](https://developers.fliplet.com/) or contact the development team.
 
-
-*Document Version: 2.0 - Reorganised and Enhanced*  
-*Last Updated: 2024* 
+*Document Version: 2.0 - Reorganised and Enhanced*
+*Last Updated: 2024*
🧰 Tools
🪛 markdownlint-cli2 (0.18.1)

820-820: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


821-821: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


822-822: Unordered list indentation
Expected: 2; Actual: 0

(MD007, ul-indent)


827-827: Trailing spaces
Expected: 0; Actual: 2

(MD009, no-trailing-spaces)


828-828: Trailing spaces
Expected: 0; Actual: 1

(MD009, no-trailing-spaces)


828-828: Files should end with a single newline character

(MD047, single-trailing-newline)

🤖 Prompt for AI Agents
In docs/documentation-and-coding-standards.md around lines 820 to 828, remove
any trailing whitespace on lines 827–828 and ensure the file ends with exactly
one newline character (no extra blank lines); save the file so it ends with a
single '\n' and contains no trailing spaces at the end of any line.

Copy link
Contributor

@Arpanexe Arpanexe left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants