User Guide · Project Setup
This guide walks you through setting up and configuring a project in GeoCore. You’ll learn how to create projects, define metadata schemas, and organize your project documents effectively.
To begin, go to geocore.pages.dev.
When you first arrive, you’ll land on the login screen. Use the login option at the top of the page to sign in.
Go to the Project section and click the “New Project” button. A popup appears where you enter a Project Name. Once the project is created, select it to open the project view. As shown below, every new project follows the same layout.
When you first open the document management module, there are no items to explore yet — so we’ll start with the settings. Under Settings you’ll find four options:
Cloning means you only have to create a schema once, then reuse it across many projects.
Selecting “Metadata Schema” from Settings opens a form builder with several options, including:
Click the Add Field button to open the “Add Field” dialog box. The dialog offers several field types for recording data in any format you need — from standard text and dates to dropdowns and checkboxes. Two special field types, Contact and Multi-Contact, let you link to the project’s Address Book.
After selecting a Text type, you can complete the field as shown:
Text, Number, Date, and Time fields share similar properties — except that Min / Max is not available for Date and Time fields.
After selecting a Dropdown (or Multi-Select) type, you can complete the field as shown:
After selecting a Checkbox type, you can complete the field as shown:
The File Upload option lets users attach additional files to a document being uploaded as metadata. The attached file carries no metadata of its own — it serves purely as a reference file.
After selecting File Upload, you can complete the field as shown:
Contact and Multi-Contact let users select one contact or multiple contacts, respectively, from the project’s Address Book.
After selecting Contact, you can complete the field as shown:
You can update the form’s style at any time to make data entry easier. By default, all fields are listed in a single column in the order they were created. To change this, click the Form Builder.
When you open the Document Metadata Form Builder, you’ll see the following options:
Copy the JSON below and paste it into the Form Builder’s import dialog to load a ready-made site-inspection form. Use it as a starting point for your own schemas.
{
"fields": [
{
"id": "section_document_type",
"type": "section",
"label": "Document Type",
"order": 0,
"layout": { "columnSpan": 12 },
"validation": {},
"sectionConfig": {
"heading": "Document Type Classification",
"padding": "md",
"borderColor": "#e5e7eb",
"backgroundColor": "#f9fafb"
}
},
{
"id": "field_type",
"type": "select",
"label": "Type of Record",
"order": 1,
"layout": { "columnSpan": 6 },
"options": [
{ "label": "Project Governance and Administration", "value": "Project Governance and Administration" },
{ "label": "Land Access and Right of Way", "value": "Land Access and Right of Way" },
{ "label": "Environmental and Regulatory", "value": "Environmental and Regulatory" },
{ "label": "Engineering and Design", "value": "Engineering and Design" },
{ "label": "Procurement and Contracts", "value": "Procurement and Contracts" },
{ "label": "Construction Field Execution", "value": "Construction Field Execution" },
{ "label": "Quality Assurance and Quality Control", "value": "Quality Assurance and Quality Control" },
{ "label": "Health and Safety", "value": "Health and Safety" },
{ "label": "Stakeholder and Indigenous Engagement", "value": "Stakeholder and Indigenous Engagement" },
{ "label": "Commissioning and Close Out", "value": "Commissioning and Close Out" }
],
"validation": {},
"parentSectionId": "section_document_type"
},
{
"id": "field_subtype",
"type": "select",
"label": "Subtype",
"order": 2,
"layout": { "columnSpan": 6 },
"cascade": {
"optionMapping": {
"Health and Safety": [
{ "label": "Safety Management", "value": "Safety Management" },
{ "label": "Incidents", "value": "Incidents" },
{ "label": "Training and Compliance", "value": "Training and Compliance" }
],
"Engineering and Design": [
{ "label": "Route Selection", "value": "Route Selection" },
{ "label": "Detailed Engineering", "value": "Detailed Engineering" },
{ "label": "Design Reviews", "value": "Design Reviews" }
],
"Procurement and Contracts": [
{ "label": "Contracting", "value": "Contracting" },
{ "label": "Procurement", "value": "Procurement" },
{ "label": "Materials Management", "value": "Materials Management" }
],
"Commissioning and Close Out": [
{ "label": "Pre Commissioning", "value": "Pre Commissioning" },
{ "label": "Commissioning", "value": "Commissioning" },
{ "label": "Project Close Out", "value": "Project Close Out" }
],
"Construction Field Execution": [
{ "label": "Pre Construction", "value": "Pre Construction" },
{ "label": "Clearing and Grading", "value": "Clearing and Grading" },
{ "label": "Installation", "value": "Installation" },
{ "label": "Crossings", "value": "Crossings" },
{ "label": "Backfill and Reclamation", "value": "Backfill and Reclamation" }
],
"Environmental and Regulatory": [
{ "label": "Regulatory Approvals", "value": "Regulatory Approvals" },
{ "label": "Environmental Assessments", "value": "Environmental Assessments" },
{ "label": "Environmental Monitoring", "value": "Environmental Monitoring" },
{ "label": "Environmental Inspections", "value": "Environmental Inspections" }
],
"Land Access and Right of Way": [
{ "label": "Land Agreements", "value": "Land Agreements" },
{ "label": "Landowner Engagement", "value": "Landowner Engagement" },
{ "label": "Access and ROW Documentation", "value": "Access and ROW Documentation" }
],
"Project Governance and Administration": [
{ "label": "Project Setup", "value": "Project Setup" },
{ "label": "Correspondence", "value": "Correspondence" },
{ "label": "Meetings", "value": "Meetings" },
{ "label": "Change Management", "value": "Change Management" }
],
"Quality Assurance and Quality Control": [
{ "label": "Inspection Records", "value": "Inspection Records" },
{ "label": "Testing", "value": "Testing" },
{ "label": "Non Conformance", "value": "Non Conformance" }
],
"Stakeholder and Indigenous Engagement": [
{ "label": "Consultation", "value": "Consultation" },
{ "label": "Monitoring", "value": "Monitoring" }
]
},
"parentFieldId": "field_type"
},
"validation": {},
"parentSectionId": "section_document_type"
},
{
"id": "field_subsubtype",
"type": "select",
"label": "Sub Subtype",
"order": 3,
"layout": { "columnSpan": 6 },
"cascade": {
"optionMapping": {
"Testing": [
{ "label": "Weld Inspection", "value": "Weld Inspection" },
{ "label": "Hydrostatic Testing", "value": "Hydrostatic Testing" },
{ "label": "Electrical Testing", "value": "Electrical Testing" }
],
"Installation": [
{ "label": "Trenching and Foundations", "value": "Trenching and Foundations" },
{ "label": "Pipe Stringing or Pole Erection", "value": "Pipe Stringing or Pole Erection" },
{ "label": "Lowering In or Conductor Stringing", "value": "Lowering In or Conductor Stringing" }
],
"Project Setup": [
{ "label": "Project Charter", "value": "Project Charter" },
{ "label": "Scope Definition", "value": "Scope Definition" },
{ "label": "Project Execution Plan", "value": "Project Execution Plan" }
],
"Correspondence": [
{ "label": "Client Correspondence", "value": "Client Correspondence" },
{ "label": "Contractor Correspondence", "value": "Contractor Correspondence" },
{ "label": "Regulator Correspondence", "value": "Regulator Correspondence" }
],
"Land Agreements": [
{ "label": "Easements", "value": "Easements" },
{ "label": "Temporary Workspace Agreements", "value": "Temporary Workspace Agreements" },
{ "label": "Access Agreements", "value": "Access Agreements" }
],
"Environmental Monitoring": [
{ "label": "Wildlife Monitoring", "value": "Wildlife Monitoring" },
{ "label": "Watercourse Monitoring", "value": "Watercourse Monitoring" },
{ "label": "Wetland Monitoring", "value": "Wetland Monitoring" }
]
},
"parentFieldId": "field_subtype"
},
"validation": {},
"parentSectionId": "section_document_type"
},
{
"id": "field_record_detail",
"type": "select",
"label": "Record Detail",
"order": 4,
"layout": { "columnSpan": 12 },
"cascade": {
"optionMapping": {
"Easements": [
{ "label": "Registered Agreements", "value": "Registered Agreements" },
{ "label": "Amendments", "value": "Amendments" }
],
"Project Charter": [
{ "label": "Approved Charter", "value": "Approved Charter" },
{ "label": "Revisions and Amendments", "value": "Revisions and Amendments" }
],
"Weld Inspection": [
{ "label": "NDT Reports", "value": "NDT Reports" },
{ "label": "Repair Logs", "value": "Repair Logs" }
],
"Wildlife Monitoring": [
{ "label": "Species Observations", "value": "Species Observations" },
{ "label": "Nesting Surveys", "value": "Nesting Surveys" }
],
"Client Correspondence": [
{ "label": "Emails", "value": "Emails" },
{ "label": "Formal Letters", "value": "Formal Letters" }
],
"Trenching and Foundations": [
{ "label": "Excavation Logs", "value": "Excavation Logs" },
{ "label": "Foundation Inspections", "value": "Foundation Inspections" }
]
},
"parentFieldId": "field_subsubtype"
},
"validation": {},
"parentSectionId": "section_document_type"
},
{
"id": "section_general",
"type": "section",
"label": "General Information",
"order": 5,
"layout": { "columnSpan": 12 },
"validation": {},
"sectionConfig": {
"heading": "General Information",
"padding": "md",
"borderColor": "#e5e7eb",
"backgroundColor": "#f9fafb"
}
},
{
"id": "field_document_no",
"type": "text",
"label": "Document No",
"order": 6,
"layout": { "columnSpan": 4 },
"validation": {},
"parentSectionId": "section_general"
},
{
"id": "field_document_name",
"type": "text",
"label": "Document Name",
"order": 7,
"layout": { "columnSpan": 12 },
"validation": { "required": true },
"parentSectionId": "section_general"
},
{
"id": "field_document_status",
"type": "select",
"label": "Document Status",
"order": 8,
"layout": { "columnSpan": 4 },
"options": [
{ "label": "Draft", "value": "Draft" },
{ "label": "Submitted", "value": "Submitted" },
{ "label": "Approved", "value": "Approved" },
{ "label": "Rejected", "value": "Rejected" },
{ "label": "Superseded", "value": "Superseded" },
{ "label": "Expired", "value": "Expired" }
],
"validation": {},
"parentSectionId": "section_general"
},
{
"id": "field_confidentiality",
"type": "select",
"label": "Confidentiality",
"order": 9,
"layout": { "columnSpan": 4 },
"options": [
{ "label": "Public", "value": "Public" },
{ "label": "Internal", "value": "Internal" },
{ "label": "Confidential", "value": "Confidential" },
{ "label": "Regulatory", "value": "Regulatory" }
],
"validation": {},
"parentSectionId": "section_general"
},
{
"id": "field_revision_number",
"type": "text",
"label": "Revision Number",
"order": 10,
"layout": { "columnSpan": 4 },
"validation": {},
"parentSectionId": "section_general"
},
{
"id": "divider_1",
"type": "divider",
"label": "Divider",
"order": 11,
"layout": { "columnSpan": 12 },
"validation": {}
},
{
"id": "section_dates",
"type": "section",
"label": "Key Dates",
"order": 12,
"layout": { "columnSpan": 12 },
"validation": {},
"sectionConfig": {
"heading": "Key Dates",
"padding": "md",
"borderColor": "#e5e7eb",
"backgroundColor": "#f9fafb"
}
},
{
"id": "field_date_added",
"type": "date",
"label": "Date Added",
"order": 13,
"layout": { "columnSpan": 3 },
"validation": {},
"parentSectionId": "section_dates"
},
{
"id": "field_submission_date",
"type": "date",
"label": "Submission Date",
"order": 14,
"layout": { "columnSpan": 3 },
"validation": {},
"parentSectionId": "section_dates"
},
{
"id": "field_revision_date",
"type": "date",
"label": "Revision Date",
"order": 15,
"layout": { "columnSpan": 3 },
"validation": {},
"parentSectionId": "section_dates"
},
{
"id": "field_expiry_date",
"type": "date",
"label": "Expiry Date",
"order": 16,
"layout": { "columnSpan": 3 },
"validation": {},
"parentSectionId": "section_dates"
},
{
"id": "field_renewal_date",
"type": "date",
"label": "Renewal Date",
"order": 17,
"layout": { "columnSpan": 3 },
"validation": {},
"parentSectionId": "section_dates"
},
{
"id": "field_followup_date",
"type": "date",
"label": "Follow Up Date",
"order": 18,
"layout": { "columnSpan": 3 },
"validation": {},
"parentSectionId": "section_dates"
},
{
"id": "divider_2",
"type": "divider",
"label": "Divider",
"order": 19,
"layout": { "columnSpan": 12 },
"validation": {}
},
{
"id": "section_ownership",
"type": "section",
"label": "Ownership and Notes",
"order": 20,
"layout": { "columnSpan": 12 },
"validation": {},
"sectionConfig": {
"heading": "Ownership and Notes",
"padding": "md",
"borderColor": "#e5e7eb",
"backgroundColor": "#f9fafb"
}
},
{
"id": "field_author",
"type": "text",
"label": "Author or Originator",
"order": 21,
"layout": { "columnSpan": 4 },
"validation": {},
"parentSectionId": "section_ownership"
},
{
"id": "field_owner",
"type": "text",
"label": "Document Owner",
"order": 22,
"layout": { "columnSpan": 4 },
"validation": {},
"parentSectionId": "section_ownership"
},
{
"id": "field_notes",
"type": "textarea",
"label": "Notes",
"order": 23,
"layout": { "columnSpan": 12 },
"validation": {},
"parentSectionId": "section_ownership"
}
]
}
Cascading dropdowns let one Select field control the options available in another — for example, choosing Type of Record filters the list shown in Subtype, which in turn filters Sub Subtype. This section walks through the setup end-to-end.
value:Label format, one per line.
value:Label format.value:Label format.
Repeat steps 2–3 with the child field as the new parent to build multi-level hierarchies such as Type → Subtype → Sub Subtype → Record Detail. There is no fixed depth limit; each new level cascades from the one above it.
The system validates each cascade on save. It will warn if the chosen parent field does not exist or is not a Select type, so cascades cannot be linked to text, date, or numeric fields.