Static Native Template and Dynamic Styling without any other app release

FileManager Project

Students and Freshers,
Good opportunity for you to learn and contribute in this project.

Here you would learn

  1. how you can change the look and feel of the iOS interface from a small server side json containing styling of the each elements of this file manager.
  2. VIPER Design pattern which is widely accepted
  3. Network Layer with Viper Design Pattern
  4. Many more to come …..

I have started this from few days before and you can contribute and share your expertise in this project.

JSON based Styling –

{
    "name":"drive",
    "driveSearch":{
        "containerWidth":390,
        "style":[
            {
                "value":"24",
                "attr":"leftRightMargin"
            },
            {
                "value":"#FFFFFFFF",
                "attr":"backgroundColor"
            }
        ],
        "searchHeight":60,
        "order":3,
        "title":{
            "name":"search for documents",
            "style":[
                {
                    "value":"#FFFFFFCC",
                    "attr":"textColor"
                },
                {
                    "value":"16.0",
                    "attr":"fontSize"
                },
                {
                    "value":"OpenSans-Bold",
                    "attr":"fontFamily"
                }
            ]
        },
        "tag":31,
        "icon":{
            "resource":"user"
        }
    },
    "style":[
        
    ],
    "driveFilesContainer":{
        "style":[
            {
                "value":"#FFFFFFFF",
                "attr":"backgroundColor"
            },
            {
                "value":"24",
                "attr":"leftMargin"
            }
        ],
        "title":{
            "name":"Files",
            "style":[
                {
                    "value":"#000000FF",
                    "attr":"textColor"
                },
                {
                    "value":"16.0",
                    "attr":"fontSize"
                },
                {
                    "value":"OpenSans-Bold",
                    "attr":"fontFamily"
                },
                {
                    "value":"15.0",
                    "attr":"topPadding"
                },
                {
                    "value":"5.0",
                    "attr":"bottomPadding"
                }
            ],
            "tag":51
        },
        "viewAll":{
            "style":[
                {
                    "value":"#000000FF",
                    "attr":"textColor"
                },
                {
                    "value":"16.0",
                    "attr":"fontSize"
                },
                {
                    "value":"OpenSans-Bold",
                    "attr":"fontFamily"
                },
                {
                    "value":"15.0",
                    "attr":"topPadding"
                },
                {
                    "value":"5.0",
                    "attr":"bottomPadding"
                }
            ],
            "tag":52
        },
        "table":{
            "title":{
                
            },
            "image":{
                "style":[
                    {
                        "value":"16.8",
                        "attr":"width"
                    },
                    {
                        "value":"19.2",
                        "attr":"width"
                    },
                    {
                        "value":"aspectFit",
                        "attr":"contentMode"
                    }
                ]
            },
            "tag":53,
            "subtitle":{
                
            }
        },
        "tag":50,
        "order":4
    },
    "driveStorage":{
        "title":{
            "name":"982 MB",
            "style":[
                {
                    "value":"#FFFFFFFF",
                    "attr":"textColor"
                },
                {
                    "value":"16.0",
                    "attr":"fontSize"
                },
                {
                    "value":"15.0",
                    "attr":"topPadding"
                },
                {
                    "value":"OpenSans-Bold",
                    "attr":"fontFamily"
                }
            ],
            "tag":21
        },
        "order":2,
        "subtitle":{
            "name":"Free of 1GB",
            "style":[
                {
                    "value":"#FFFFFFCC",
                    "attr":"textColor"
                },
                {
                    "value":"15.0",
                    "attr":"fontSize"
                },
                {
                    "value":"15.0",
                    "attr":"topPadding"
                },
                {
                    "value":"OpenSans-SemiBold",
                    "attr":"fontFamily"
                }
            ],
            "tag":22
        },
        "style":[
            {
                "value":"24,0,0,10",
                "attr":"Margin"
            }
        ],
        "progress":{
            "name":"40",
            "style":[
                {
                    "value":"#000000FF",
                    "attr":"backgroundColor"
                },
                {
                    "value":"4",
                    "attr":"height"
                }
            ],
            "tag":23
        }
    },
    "driveFooter":{
        "order":5,
        "style":[
            {
                "value":"24,44,0,0",
                "attr":"Margin"
            }
        ],
        "button":{
            "name":"Add File",
            "style":[
                {
                    "value":"#000000FF",
                    "attr":"textColor"
                },
                {
                    "value":"700.0",
                    "attr":"fontWeight"
                },
                {
                    "value":"16.0",
                    "attr":"fontSize"
                },
                {
                    "value":"#502EE3FF",
                    "attr":"backgroundColor"
                },
                {
                    "value":"40",
                    "attr":"height"
                },
                {
                    "value":"20",
                    "attr":"cornerRadius"
                },
                {
                    "value":"80",
                    "attr":"width"
                },
                {
                    "value":"OpenSans-Regular",
                    "attr":"fontFamily"
                }
            ],
            "tag":61
        },
        "tag":60
    },
    "order":1,
    "driveHeader":{
        "style":[
            {
                "value":"24,44,0,0",
                "attr":"Margin"
            }
        ],
        "title":{
            "name":"FileManager Drive",
            "style":[
                {
                    "value":"#FFFFFFFF",
                    "attr":"textColor"
                },
                {
                    "value":"700.0",
                    "attr":"fontWeight"
                },
                {
                    "value":"24.0",
                    "attr":"fontSize"
                },
                {
                    "value":"Metropolis-Regular",
                    "attr":"fontFamily"
                }
            ],
            "tag":11
        },
        "order":1,
        "subtitle":{
            "name":"Documents in the FileManager Drive are Not treated as authentic",
            "style":[
                {
                    "value":"#FFFFFFFF",
                    "attr":"textColor"
                },
                {
                    "value":"14.0",
                    "attr":"fontSize"
                },
                {
                    "value":"OpenSans-Regular",
                    "attr":"fontFamily"
                }
            ],
            "tag":12
        },
        "image":{
            "style":[
                {
                    "value":"aspectFit",
                    "attr":"contentMode"
                }
            ],
            "tag":13,
            "resource":"file-header"
        },
        "tag":10
    },
    "driveFoldersContainer":{
        "title":{
            "name":"Folders",
            "style":[
                {
                    "value":"#000000FF",
                    "attr":"textColor"
                },
                {
                    "value":"16.0",
                    "attr":"fontSize"
                },
                {
                    "value":"OpenSans-Bold",
                    "attr":"fontFamily"
                },
                {
                    "value":"15.0",
                    "attr":"topPadding"
                },
                {
                    "value":"5.0",
                    "attr":"bottomPadding"
                }
            ],
            "tag":41
        },
        "order":4,
        "style":[
            {
                "value":"#FFFFFFFF",
                "attr":"backgroundColor"
            },
            {
                "value":"24",
                "attr":"leftMargin"
            }
        ],
        "tag":40,
        "horizontalBar":{
            "style":[
                {
                    "value":"104",
                    "attr":"width"
                },
                {
                    "value":"104",
                    "attr":"height"
                }
            ],
            "title":{
                "style":[
                    {
                        "value":"20",
                        "attr":"height"
                    },
                    {
                        "value":"12",
                        "attr":"fontSize"
                    },
                    {
                        "value":"OpenSans-SemiBold",
                        "attr":"fontFamily"
                    },
                    {
                        "value":"center",
                        "attr":"textAlignment"
                    },
                    {
                        "value":"8",
                        "attr":"topPadding"
                    }
                ]
            },
            "image":{
                "style":[
                    {
                        "value":"#OOOOOOFF",
                        "attr":"backgroundColor"
                    },
                    {
                        "value":"40.0",
                        "attr":"width"
                    }
                ]
            },
            "tag":42,
            "itemStyle":[
                {
                    "value":"104",
                    "attr":"width"
                },
                {
                    "value":"104",
                    "attr":"height"
                }
            ]
        }
    }
}

Getting Started

Fork the project

  1. Fork Project using fork button at top right to become the part of great community of iOS App Developers

Requirements

  • iOS 12.0 or later
  • macOS 10.12 or later (10.15 for Catalyst)
  • Xcode 11.0 or later

Podfile

platform :ios, '9.0'
pod 'SDWebImage'
pod 'RealmSwift'

Getting Started

  1. Install Pods (Can be done by following command in Terminal )
    pod install
  2. Change environmentBaseURL, path, httpMethod, task, headers

    Change according to the api specifications

  3. To load default list uncomment line

    presenter?.fetchFileList(path:nil)

Who Uses It

  • Those who are keen to learn and explore knowledge in iOS App Development , can contribute in project by sending pull request.

Communication

  • If you need help you can ask questions in Discussions Tab
  • If you have a feature request, open an issue.

Contribution

  • Code Optimization
  • Feature Development
  • Bug Finding
  • Bug Fixing

Developed Modules

  • File Manger Template
  • Embedded styling of the native elements using json
  • Added Click handlers and navigate to the folder detail screen
  • Option Menu added on click
  • Network Layer Added
  • Default List Added
  • Realm Database added to show default list
  • Add File Button added
  • Realm Manager added
  • Background refresh done using Realm

Under Development

ScreenShots

  1. File Manager
  2. File Detail Page

GitHub

View Github