Guide
Help
Browse Gramex questions
See what others have asked, or answer them.
Report a bug
We'll respond in 24 hrs.
Email us for support
We're available cto@gramener.com.
Gramex Guide
Search
Overview
Quickstart tutorial
Dashboard tutorial
Charts tutorial
Dropdown tutorial
ML app tutorial
Fixing SQL injection
Exercises
Usage
Install Gramex
Gramex init
Configurations
Capturing state
Deployment patterns
Debugging Gramex
Security
Testing Gramex
Gramex Features
Complexity
Tips
VS Code Snippets
Contributing
Microservices
FileHandler
FormHandler
FunctionHandler
Auth handlers
DriveHandler
CaptureHandler
MLHandler
MLPredictor
PPTXHandler
ComicHandler
OpenAPIHandler
MessageHandler
ChatGPTHandler
FilterHandler
JSONHandler
ProxyHandler
ProcessHandler
WebSocketHandler
TwitterRESTHandler
FacebookGraphHandler
Write handlers
API rate limits
Libraries
TopCause
Cache requests
Send email
Smart alerts
Logging
Schedule tasks
Watch files
Apps
Run apps
Admin page
Charts
UI Components
UIFactory
g1
Mapviewer
View logs
Language Tool
Product
Gramex Roadmap
Release notes
Editions
FAQ
Reference
License
API Reference
Link check
Index of topics
Home
Gramex Guide
admin
Admin page
Admin access control
Admin: Alert
Admin: Config
Admin: Info
Admin: Logs
Admin page
Admin page (old)
Admin: Schedule
Admin: Shell
Admin: User management
Edit User Attribute Rules
Sign Up Users with a Welcome Email
alert
Smart alerts
Alert API
Alert command line
Alert configuration
Alert examples
Alert logs
Alert preview
Alert setup
Alert templates
Avoid re-sending emails
Dynamic emails from data
Email dashboards
Email multiple people
Mail merge: change content by user
Place body and HTML in a file
Reply to different user
Send a scheduled email
Send alerts on condition
Send as a different user
Send attachments
Send HTML email
Send inline images
Send notification on alert
Use multiple datasets
Use multiple services
apps
Gramex Apps
Creating apps
Deploying app data
Installing apps
Running apps
Setting up apps
Uninstalling apps
Updating apps
auth
Auth handlers log in users
Add Attribute Rules
AJAX login
API key
Authentication
Authentication features
Authorization
Authorization HTTP methods
Automated logins
Azure Active Directory
Bind LDAP login
Change inputs
Database auth
Direct LDAP login
Distributed OTP and API keys
Email Auth
Encrypted user
Ensure single login session
Facebook auth
Failed login delay
Forgot password
Google auth
Inactive expiry
Integrated auth
LDAP attributes
LDAP auth
Log out
Logging logins
Login actions
Login templates
Login URLs
Lookup attributes
Multiple logins
OAuth2
Offline access to Google data
OTP
Protect all pages
Recaptcha
Roles
SAML Auth
Session expiry
Session security
Session store
Sessions
Sign up
Simple auth
SMS Auth
SSL certificate error
Templates for unauthorized
Twitter auth
User attributes
User store
Validated login
cache
Caching requests
Browser caching
Cache expiry
Cache keys
Cache static files
Cache status
Cache stores
Data caching
Module caching
Query caching
Server caching
Subprocess streaming
capturehandler
CaptureHandler takes screenshots
Chrome
Client-side capture
Encode URLs
PhantomJS
Screenshot library
Screenshot service
chart
Charts
D3
Deprecations
Gramex Charts
Vega
comichandler
ComicHandler serves comics
complexity
Gramex Code Complexity
config
Configurations control Gramex
Access configurations programmatically
App configuration
Command line args
Computed variables
Conditional variables
Conditions
Config Viewer
Configuration access
Custom HTTP Headers
Custom MIME types
Dynamic configuration
Error handlers
Exception information
Handler logging
HTTP Methods
JSON error response
Logging
Merging variables
Predefined variables
Redirection
Request logging
Reusing configurations
Scheduling
URL mapping
User logging
YAML duplicate keys
YAML imports
YAML inheritence
YAML namespaces
YAML styling
YAML variables
YAML wildcard keys
contributing
Contributing to Gramex
Committing
Decide the storyline
Insert the video
Record the video
Release Gramex Community Edition
Release Gramex Enterprise Edition
Set up Gramex for development
Test Gramex
Video tutorials
dashboard
Templatize visualization dashboard creation
datahandler
DataHandler connects to data
debug
Debug Gramex
Browser on startup
Debug mode
Line profile
Print statements
Profiling
Python debugger
Reloading
Timer
Tracing
deploy
Deployment patterns
403 Forbidden
404 Not Found
Apache load balancing
Apache reverse proxy
Cannot load function
Cannot start Capture
Common errors
Content Security Policy
CORS
CORS POST with auth
Deploy on gramener.com servers
Deploying secrets
Deployment checklist
deploy.yaml
Direct HTTPS server
Docker image
Duplicate key
gramex.yaml secrets
Handler name conflict
HTTPS Server
Import conflict
Linux scheduled tasks
Linux service
Log file order
Missing dependency
Multiple Windows Services
nginx load balancing
nginx reverse proxy
nginx security
Other common errors
Port 8001 is busy
Proxy servers
Python file conflict
Relative URL mapping
Secrets
.secrets.yaml
.secrets.yaml imports
.secrets.yaml URLs
Security
Shared deployment
Testing
Troubleshooting Windows Services
Using relative URLs
Using YAMLPATH
Windows administration
Windows scheduled tasks
Windows Service
Works locally but not on server
drivehandler
DriveHandler uploads files
AJAX uploads
Delete files
DriveHandler XSRF
Expose datasets
File Manager
List files
Post-process uploads
Pre-process uploads
Tags
Update files
User fields
edition
Gramex Editions
Gramex comes in 3 editions
License model
Switch between editions easily
When to use the Community Edition
When to use the Enterprise edition
When to use the Lite Edition
email
Send email
Automated email alerts
Command-line emails
Email attachments
HTML email
Send email
Test email service
exercises
Gramex exercises
facebookgraphhandler
FacebookGraphHandler
Facebook Persist
faq
Gramex FAQ
Deployment
Describe the session management approach
Development
Does Gramex enforce enabling SSL on landing pages that have authentication function?
Does Gramex expose any private object references (e.g. primary keys)?
Does Gramex have a Policy that prohibits sharing of individual accounts and passwords?
Does Gramex log any confidential and sensitive personal information like government issued IDs, passwords etc
Does Gramex support automatic login function (remember me function to store credentials)?
Does Gramex support two-step registration process or two-step authentication?
Does Gramex use HTTP POST method when transmitting authentication credentials over HTTP?
Example Hardware Requirements
Gramex Deployment Manual - Windows Server
How are Gramex and Gramex applications audited for security compliance?
How are Gramex applications deployed?
How does Gramex defend against brute force login attacks?
How does Gramex defend from Cross-frame Scripting (XFS) attacks?
How does Gramex defend from Cross-site Request Forgery (CSRF) attacks?
How does Gramex defend from Cross-site Scripting (XSS) attacks.?
How does Gramex defend from directory traversal attacks?
How does Gramex defend from header injection attacks (e.g. CRLF)?
How does Gramex defend from URL redirection attacks?
How does Gramex encrypt password?
How does Gramex handle Encryption keys. Elaborate on creation, regeneration, transmit mechanism?
How does Gramex handle network (data-in-transit) security and storage (data-at-rest) security?
How does Gramex integrate with R?
How does Gramex load and store data?
How does Gramex manage Digital certificates and their authentication?
How does Gramex restrict access based on business purpose? Does Gramex support authorization control for functions or services?4242
How does Gramex transform data?
How is data backed up?
How is Gramex funded?
How is the Gramex source code maintained and updated?
How many users can Gramex handle?
How much data volume can Gramex handle?
Integration
Security
What anti-virus protections does Gramex provide or use?
What applications does Gramex integrate with out-of-box?
What are the role-based access controls that are supported by Gramex? Are there any default roles or default permissions?
What authentication mechanisms does Gramex support?
What databases does Gramex support?
What does the Gramener Architecture look like?
What does the Gramex team work on?
What environment is required for Gramex applications?
What input file formats does Gramex support?
What is Gramex’s logging mechanism? What information is captured? Who can access the logs?
What open source libraries and licenses does Gramex use?
What password policies does Gramex support?
What testing do Gramex applications go through?
Where does it fit in my enterprise’s architecture?
Who develops Gramex?
features
Gramex Features
Configurations
Feature usage
Handlers
Services
filehandler
FileHandler renders files
Caching
Configure all FileHandlers
Default FileHandler
Default filename
Directory listing
Dynamic sub-templates
File concatenation
File Patterns
FileHandler HTTP methods
Ignore files
MIME types
Redirecting files
SASS
Sub-templates
Template syntax
Templates
Transforming content
TypeScript
UI Modules
Vue
XSRF
filterhandler
FilterHandler
FilterHandler Features
FilterHandler hierarchies
FilterHandler in memory
FilterHandler Ranges
FilterHandler usage
Populate filter values
formhandler
FormHandler connects to data
Categorical plots
Custom HTTP Headers
Date parsing
Exporting the entire table
FormHandler argument type
FormHandler charts
FormHandler columns
FormHandler defaults
FormHandler DELETE
FormHandler directory listing
FormHandler downloads
FormHandler edits
FormHandler filters
FormHandler formats
FormHandler forms
FormHandler functions
FormHandler groupby
FormHandler JSON body
FormHandler metadata
FormHandler modify
FormHandler multiple datasets
FormHandler parameters
FormHandler POST
FormHandler prepare
FormHandler PUT
FormHandler query
FormHandler query caching
FormHandler queryfile
FormHandler queryfunction
FormHandler tables
FormHandler templates
FormHandler transforms
FormHandler validation
FormHandler Vega charts
Grid plots
Matrix plots
Parameter Substitution
Plotting entire data
Preventing SQL injection
Regression plots
Supported databases
Supported files
formhandler/cashflow
Cash flow
Create another chart
Create the chart
Customize the chart
Expose Excel data
Prepare the data
See the result
function
Functions
Expressions
Pipelines
functionhandler
FunctionHandler runs Python code
Asynchronous functions
Function arguments
Function arguments from URL
Function output
Function redirection
HTTP headers
HTTP methods
Parse URL arguments
Streaming output
URL path arguments
g1
Change URL state
Components
g1
Installation
Interactions
Libraries
Parse URLs
Render templates
Single page apps
URL-based state
Utilities
Virtual DOM
groupmeans
GroupMeans analyzes root causes
Exploratory analysis
Root cause analysis
Upload your data
handlers
Writing handlers
BaseHandler Attributes
Initialization
Tornado handler attributes
init
Gramex init
Minimal init
install
Install Gramex
Conda install
Docker install
Install Gramex Enterprise
Pip install
Run a Gramex app
Troubleshooting
Uninstall Gramex Enterprise
Upgrade Gramex Enterprise
VSCode Extension
jsonhandler
JSONHandler writes JSON data
DELETE - remove data
Escaping slash in keys
GET - read data
Method override
PATCH - update data
POST - add data
PUT - write data
languagetool
LanguageTool App for Gramex
Autocorrect with LanguageTool
Configuration
Examples
Installation
LanguageTool
LanguageTool API
Play with LanguageTool
Usage
Using LanguageTool with Ajax
license
Gramex license
Gramex Community is free for use
Gramex Enterprise is free for non-commercial use
Third party libraries
linkcheck
Guide self test
logging
Log user and system events
Logging handler
Multiple logs
Viewing logs
logviewer
Log viewer
Add custom KPIs
Customizing Logviewer
Logviewer database location
Logviewer usage
logviewer.db
Multiple logviewer instances
Session Calculations
Using Variables
messagehandler
MessageHandler
MessageHandler alert
MessageHandler configuration
MessageHandler defaults
MessageHandler filters
MessageHandler modify
MessageHandler open
MessageHandler prepare
mlhandler
MLHandler provides ML APIs
Change the model and modify its parameters
Creating New Models
Delete a model
Example: Classify overlapping patterns with logistic regression
Exposing Existing Models
FAQs
Feature Engineering in MLHandler
Getting bulk predictions
Getting predictions
How to append to the training data?
How to delete the model?
How to delete training data?
How to download a model?
How to download training data?
How to get the accuracy score of my model?
MLHandler Templates
Model operations
Named Entity Recognition
Retraining the model
See model parameters
Sentiment Analysis
Time series forecasting
mlpredictor
MLPredictor runs models
modelhandler
ModelHandler provides ML APIs
API Reference
Classifier
Example Usage
Expose Endpoints
GroupMeans
Links to Machine Learning and Analytics Usecases
newsletter
node
Run JavaScript
JavaScript conversion
Run JavaScript
openapihandler
OpenAPIHandler documents APIs
FormHandler OpenAPI
FunctionHandler OpenAPI
OpenAPIHandler
OpenAPIHandler Configuration
overview
Gramex Guide
Apps
Demos
Deprecated
Libraries
Micro-services
Product
Reference
Usage
Workshops
pptxhandler
PPTXHandler generates PPTX
About
Albus Dumbledore's screen time
Bar chart race
Bestselling Pharmaceutical Drugs
Causes of death
Chart
Clone shapes
Color scales on maps
Color units
Command line
Commands
Copy slides
Data
Debug
Expressions
Groups
Image
Length units
Link
Literals
Position
PPTGen Library
PPTX to images
Rate of Entrepreneurship
Reference
Register
Rules
Shapes
Slide filters
Style
Support
Table
Text
Text format
Transition
Tutorials
Usage
pptxhandler/add-position
Add position examples
pptxhandler/albus-dumbledore-screen-time
Albus Dumbledore's Screen Time
Create the data
Create the rules
Create the source template
See the result
pptxhandler/bar-chart-race
Bar Chart Race
Create the data
Create the rules
Create the source template
See the result
pptxhandler/certificate
Certificates
Create the data
Create the rules
Create the source template
See the result
pptxhandler/chart
Chart example
Create the data
Create the rules
Create the source template
See the result
pptxhandler/choropleth
Create the data
Create the rules
Create the source template
See the result
US Election Results Map
pptxhandler/clone-shape
Copy slide example
pptxhandler/death
Automated insights
Create the data
Create the rules
Create the source template
See the result
Shifting Causes of Death
Try it yourself
pptxhandler/entrepreneurship
Rate of New Entrepreneurs
Create the data
Create the rules
Create the source template
See the result
pptxhandler/groups
Groups example
pptxhandler/link
Add link examples
pptxhandler/position
Position example
pptxhandler/sales-funnel
Sales funnel
pptxhandler/table
Bestselling Pharmaceutical Drugs
Create the data
Create the rules
Create the source template
See the result
pptxhandler/text
Text example
pptxhandler/text-format
Text format example
pptxhandler/transition
Transition example
pptxhandler/v1
PPTXHandler generates PPTX
Bullet
Calendarmap
Chart
Commands
CSS
Custom charts
Data
Deprecated commands
Expressions
Groups
Heatgrid
Image
Native charts
PPTGen
PPTGen Command Line
PPTGen Configuration
PPTGen Library
PPTX URL arguments
Register: Register a new command to PPTGen
Replace
Replicate
Rules
Sankey
Shapes
Slides
Stack
Table
Templates
Text
Treemap
privacy
Privacy policy
processhandler
ProcessHandler runs programs
ProcessHandler redirection
proxyhandler
ProxyHandler proxies APIs
Facebook ProxyHandler
Google Cloud NLP
Google ProxyHandler
Google Search
Google Services
Google Translate
Proxy sites
ProxyHandler Configuration
ProxyHandler modify
ProxyHandler prepare
queryhandler
QueryHandler runs SQL queries
r
R
R arguments
R async
R commands
R packages
R plots
R scripts
RMarkdown
ratelimit
Rate Limit APIs
Rate Limit
Rate Limit store
release
Gramex releases
Release cycle
Release Notes
release/1.30
Gramex 1.30 Release Notes
Bugs
Config reload
Documentation
Log viewer
Multiple logins
OAuth2 login
Others
Proxy APIs
SMS notification
Stats
Upgrade
release/1.31
Gramex 1.31 Release Notes
Alert preview
API integration
Charts
Developer updates
FormHandler directory browsing
HTTP error reporting
Installation
Lato font
Log viewer
Path arguments
Prevent URL conflicts
Repository moved
Stats
Upgrade
release/1.32
Gramex 1.32 Release Notes
CaptureHandler Proxy
Gramex init
Internal bugfixes
Logviewer configuration
Stats
Tornado 5.0
Upgrade
YAML merge variables
release/1.33
Gramex 1.33 Release Notes
Add roles to users
Admin module
FormHandler charts
Multi-process logging
Other enhancements
Quickstart tutorial
Sanddance
Screenshot alerts as user
Stats
Upgrade
release/1.34
Gramex 1.34 Release Notes
AJAX XSRF
Anton font
Config Viewer
Deprecations
Developer updates
FormHandler JSON
Internal bugfixes
Others
Server Traceback
Stats
Upgrade
Vega Examples
release/1.35
Gramex 1.35 Release Notes
Admin module
FormHandler tutorial
ModelHandler
Other enhancements
Others
pip10
Stats
Upgrade
release/1.36
Gramex 1.36 Release Notes
Bug fixes
Exotel SMS service
Mapviewer
Other enhancements
Python 3 tests
Redis Store
SMS Auth
Stats
Upgrade
release/1.37
Gramex 1.37 Release Notes
Apache reverse proxy
Bug fixes
CaptureHandler tutorial
Developer Updates
R interface
Stats
Upgrade
release/1.38
Gramex 1.38 Release Notes
Apache Load Balancing
Bug fixes
Developer Updates
EmailAuth
FormHandler Group By
g1
Quickstart
Stats
Upgrade
UploadHandler
release/1.39
Gramex 1.39 Release Notes
Bug fixes
Developer Updates
FormHandler
Logviewer
MapViewer
PyNode
Stats
UI Components
Upgrade
release/1.40
Gramex 1.40 Release Notes
Bug fixes
Developer Updates
$.dropdown events
FilterHandler
FormHandler modify
g1
g1 dropdown
Logviewer
MapViewer
Password Encryption
Smart Alerts
Speech Demo
Stats
Upgrade
release/1.41
Gramex 1.41 Release Notes
40X reporting
AJAX Uploads
Bug fixes
Developer Updates
Error Reporting
Favicon
g1
g1 urlfilter
Gramex Update
Guide Link Checker
Guide Search
Install
Logviewer
Python console
Stats
UI Components
Upgrade
release/1.42
Gramex 1.42 Release Notes
Admin Module
Bug fixes
Developer Updates
Offline Docker Install
Stats
Upgrade
Webshell
release/1.43
Gramex 1.43 Release Notes
Bug fixes
Developer Updates
FormHandler Edits Modify
Stats
Upgrade
release/1.44
Gramex 1.44 Release Notes
Admin gramex info
Bug fixes
EULA
FormHandler supports URLs
g1
Groupmeans
RMarkdown
Stats
Upgrade
Vega gallery
release/1.45
Gramex 1.45 Release Notes
Actions
Admin
Auth
bootstrap-select
Developer Updates
dropzonejs
g1
Stats
UI Components
Upgrade
Vega gallery
release/1.46
Gramex 1.46 Release Notes
Admin
Admin console (webshell)
Admin info
bootstrap.bundle.js
Developer Updates
gramex init
ModelHandler
Other Updates
Stats
Upgrade
Vega gallery
release/1.47
Gramex 1.47 Release Notes
$.ajaxchain
Auth
g1
Guide
Stats
$.template
UI Components
Upgrade
$.urlchange
release/1.48
Gramex 1.48 Release Notes
Admin page enhancements
Auto-create tables
Automated translations
Better gramex init
Bugfixes
Documentation
SASS support
Stats
Template components
Upgrade
release/1.49
Gramex 1.49 Release Notes
Better gramex init
Bootstrap 4.2
Bugfixes
Chart gallery
g1 animated templates
g1 $.search
Stats
Upgrade
release/1.50
Gramex 1.50 Release Notes
Bugfixes
CORS and FormHandler validation docs
Encrypt service is deprecated
g1 upgraded to 0.13
Gramex has a new test framework
Stats
Translations are easier
UI components have new colors, utilities and libraries
Upgrade
release/1.51
Gramex 1.51 release notes
Add header and footer to PDF screenshots
Bugfixes
Documentation is more interactive
Enhanced security: Protect against bots
Gramex is open source
Stats
Test application on multiple screen resolutions
Upgrade
release/1.52
Gramex 1.52 release notes
Alerts can be synchronized across time-zones
Auto-complete with snippets on Visual Studio Code
Browsing files with FormHandler is simpler
FormHandler is more flexible
How to upgrade
Load balancing with authentication across domains
New graphics capability with d3 v5
Search-engine friendly file URLs
Smart alerts send personalized dashboards as attachments
Statistics
Templates refresh immediately when included files are updated
Test pages created by JavaScript
release/1.53
Gramex 1.53 release notes
g1 features fuzzy search
Gramextest makes testing easier
How to upgrade
Natural Language Generation
Statistics
Templates support UI modules
release/1.54
Gramex 1.54 release notes
Admin components URL changed
Admin UI features alerts and schedules
Admin UI for Alert
Admin UI for Schedule
Feather
FormHandler creates tables with primary keys
FormHandler parameters
How to upgrade
JSONData
LanguageTool app
New data formats
Parquet
Statistics
release/1.55
Gramex 1.55 release notes
Bug fixes
FormHandler summarizes data
How to upgrade
Other enhancements
Statistics
UI component upgrades
release/1.56
Gramex 1.56 release notes
Bug fixes
Chrome device emulation
How to upgrade
Other enhancements
Statistics
UI component upgrades
URL Driven Dashboards Tutorial
Vega parameter substitution
release/1.57
Gramex 1.57 release notes
Bug fixes
Developer updates
How to upgrade
Other enhancements
Statistics
UI component upgrades
release/1.58
Gramex 1.58 release notes
Azure Active Directory
Bug fixes
Developer updates
How to upgrade
Statistics
UI component upgrades
release/1.59
Gramex 1.59 release notes
API changes
Bug fixes
DriveHandler manages files
How to upgrade
Statistics
UI component upgrades
release/1.60
Gramex 1.60 release notes
API changes
Bug fixes
File Manager is a UI for DriveHandler
How to upgrade
Statistics
release/1.61
Gramex 1.61 release notes
Bug fixes
Create interactive presentations
Fast, persistent, distributed cache
How to install
Improved
Statistics
Use Python expressions in YAML
What next
release/1.61.1
Gramex 1.61.1 release notes
How to upgrade
Statistics
release/1.62
Gramex 1.62 release notes
Create presentations from the command line
Gramex Charts preview
How to install
Other features
PowerPoint tables and charts
Statistics
What next
release/1.63
Gramex 1.63 release notes
Conda install
Docker install
Embedding other apps
How to install
New Gramex Guide
Other features
Statistics
What next
release/1.63.2
Gramex 1.63.2 release notes
Details
release/1.64
Gramex 1.64 release notes
Client-side screen capture
Connect to more databases
Deploy secrets securely
Gramex IDE is in beta
How to install
Log into multiple apps simultaneously
Multiple logins for the same app
Offline installation
Other changes
Protect the entire app
Run multiple apps on a server
Statistics
Tutorial on building an ML classifier
What next
release/1.65
Gramex 1.65 release notes
Credits
Excel ranges supported
Flexible logging
Functions as REST APIs
Functions converted to JSON
How to install
Other improvements
Statistics
What next
release/1.66
Gramex 1.66 release notes
Auto-compile SASS files
Auto-create table schema
Bootstrap themes
Bug fixes
Cache database queries
Credits
Fetch inserted rows
Git LFS support
Gramex UI components in SASS
How to install
Other improvements
Restrict HTTP methods on any handler
Statistics
Transform multiple file types
What next
release/1.67
Gramex 1.67 release notes
Bug fixes
Credits
How to install
Other improvements
Simpler handler names
Statistics
Train ML models
What next
release/1.68
Gramex 1.68 release notes
Add fields
Bug fixes
Collect responses
Edit fields
Embed form
How to install
Import secrets
Statistics
UI Factory - Forms
What next
release/1.69
Gramex 1.69 release notes
Auto-render template files
Bug fixes
Donut Charts in PPTXHandler
How to install
Offline access to Google data
Other improvements
Statistics
What next
release/1.70
Gramex 1.70 release notes
Bootstrap 5 support
Bug fixes
Credits
How to install
Minimal scaffolding
MongoDB support
Other improvements
Statistics
VueJS support
release/1.71
Gramex 1.71 release notes
Backward compatibility & security
Bug fixes
ComicHandler serves comics
Deprecations
Gramex prefers npm over yarn
How to install
JSONHandler escapes slashes in keys
More robust security
Specify URL where Gramex is running
Statistics
release/1.72
Gramex 1.72 release notes
Backward compatibility & security
Bug fixes
ComicHandler templates
FormHandler MongoDB writeback
How to install
OpenAPI support
Release process
Statistics
TopCause analysis
UIFactory charts
release/1.73
Gramex 1.73 release notes
Backward compatibility & security
Bug fixes
Comicgen icons
FormHandler InfluxDB support
Gramex Roadmap
How to install
LogViewer supports custom KPIs
OpenAPIHandler supports FormHandlers
Statistics
UIFactory
UIFactory blocks
UIFactory events
release/1.74
Gramex 1.74 release notes
Add custom fields and roles for users
Add new users on Admin app
Backward compatibility & security
Bug fixes
How to install
Statistics
UIFactory inline scripts
release/1.75
Gramex 1.75 release notes
Allow computing variables from functions on first load
Backward compatibility & security
FileHandler reloads index templates
FormHandler writes data to MongoDB
Gramex diagnostics
Gramex reloads after invalid configurations
Gramex Windows Service shutdown is graceful
How to install
Page redirection works after restart
ServiceNow data connector
Statistics
Users are not logged out unexpectedly
release/1.76
Gramex 1.76 release notes
Backward compatibility & security
Bug fixes
Gramex is ready for Python 3.9
How to install
Schedulers run every second
Statistics
Tutorial videos
release/1.77
Gramex 1.77 release notes
API keys support
Backward compatibility & security
Bug fixes
How to install
SameSite cookies
Secure MongoDB access
Session cookies
Statistics
release/1.78
Gramex 1.78 release notes
Authorization HTTP methods
Backward compatibility & security
Bug fixes
CORS with auth
Dynamic SASS imports
How to install
Statistics
Time Series Models
TypeScript
release/1.79
Gramex 1.79 release notes
Backward compatibility & security
Distributed OTP and API keys
How to install
Multiple default filenames
Relative opens in templates
Statistics
release/1.80
Gramex 1.80 release notes
API Documentation
Backward compatibility & security
Command-line logging control
Deprecations
Displaying logger
Function pipelines
How to install
JS security updates
Sentiment analysis with Huggingface transformers
Statistics
release/1.81
Gramex 1.81 release notes
Backward compatibility & security
Better computed variables
Better table schema caching
Bug fixes
Deprecations
Distributed Logging
How to install
Statistics
Transform variable arguments
release/1.82
Gramex 1.82 release notes
Backward compatibility & security
Bootstrap 5 support in G1
Bug fixes
How to install
Revoke API keys and OTPs
Session cookie path
Statistics
release/1.83
Gramex 1.83 release notes
Backward compatibility & security
Bug fixes
Distributed OTP and API keys
How to install
Named Entity Recognition
RMarkdown is removed
Slim Docker build
Statistics
release/1.84
Gramex 1.84 release notes
Backward compatibility & security
Deprecate old UI libraries
FormHandler date comparison
How to install
MLPredictor
Statistics
release/1.85
Gramex 1.85 release notes
Backward compatibility & security
Bug fixes
Code reformatted
DriveHandler post-processing
Fetch no longer requires XSRF
FilterHandler hierarchies
FormHandler columns support default functions
FormHandler POST supports templates
How to install
Redirect old UI libraries
Secure Docker builds
Statistics
release/1.86
Gramex 1.86 release notes
API rate limits
Backward compatibility & security
Bug fixes
How to install
Improved FilterHandler
Modern Python packaging
Non-root Docker usage
Statistics
release/1.87
Gramex 1.87 release notes
Backward compatibility & security
Bug fixes
Distributed user stores
Flexible Delete
FormHandler argument type
How to install
MS SQL ordering
Old Admin App deprecated
Statistics
release/1.88
Gramex 1.88 release notes
Backward compatibility & security
Breakpoint Debugging
Bug fixes
Build improvements
How to install
IDE templates
Statistics
release/1.89
Gramex 1.89 release notes
Backward compatibility & security
Case insensitive search
Distributed user logs
How to install
Measure code complexity
Measure Gramex usage
Statistics
release/1.90
Gramex 1.90 release notes
Backward compatibility & security
Backward-incompatible changes
Gramex features formatting
How to install
Lighter gramex init
MessageHandler for live communication
Statistics
Web Crypto for hashing
WebsocketHandler arguments
release/old
Gramex Old Release Notes
v1.0.0 (2015-09-08)
v1.0.1 (2015-09-09)
v1.0.2 (2015-10-11)
v1.0.3 (2016-01-18)
v1.0.4 (2016-03-30)
v1.0.5 (2016-04-15)
v1.0.6 (2016-05-01)
v1.0.7 (2016-05-15)
v1.0.8 (2016-06-01)
v1.0.9 (2016-06-15)
v1.10 (2016-07-01)
v1.11 (2016-07-15)
v1.12 (2016-07-21)
v1.13 (2016-08-01)
v1.14 (2016-08-11)
v1.15 (2016-08-21)
v1.16 (2016-10-16)
v1.17 (2017-01-29)
v1.17.1 (2017-04-23)
v1.18.0 (2017-06-29)
v1.19.0 (2017-07-09)
v1.20.0 (2017-07-31)
v1.21.0 (2017-08-29)
v1.22.0 (2017-09-28)
v1.23.0 (2017-10-31)
v1.23.1 (2017-11-13)
v1.24.0 (2017-11-30)
v1.25.0 (2017-12-15)
v1.26.0 (2017-12-31)
v1.27.0 (2018-01-20)
v1.28.0 (2018-01-31)
v1.29.0 (2018-02-15)
roadmap
Gramex Roadmap
Releases
scheduler
Schedule tasks
Dynamic scheduling
Schedule timing
Scheduler API
Scheduler preview
search
Index of topics
security
Security
Gramex security tests
sms
Send SMS
Amazon SNS
Exotel
Send SMS
Twilio
snippets
Snippets (Visual Studio Code Extension)
How to use
Installation
state
Capturing State
Store state as a hash
Store state as a search string
Use form-encoding to capture state
test
Automate tests
Check content on page
Check HTML response
Check HTTP headers
Check if page has text
Check if page is live
Check JSON response
Debugging
Execute code
Grouping
Interact with the browser
Interact with the page
Matches
Naming
Printing
Quickstart
Run specific tests
Running tests
Selectors
Set up browsers
Skipping
Test reporting
Test specification
UI test
URL test
Waiting
tips
Tips & Tricks
Gramex Tips
Reuse code
topcause
TopCause does root cause analysis
TopCause configuration
TopCause results
translate
Translate
Translate API
Translate cache
Translate function
tutorials
Tutorials
tutorials/azure-oauth2
Authenticate Users with a Microsoft Account
Getting the Authorization and Access Token URLs
Getting the Client ID and Client Secret
Prerequisites
Set up an App Registration on Azure
Setup the Gramex OAuth2 Handler
Specifying the Redirect URI
tutorials/charts
Tutorial: Creating Interactive Charts with Gramex
Introduction
Outcome
Requirements
Step 0: Basic Layout and Scaffolding
Step 1: Performing the Cross-Tabulation with FormHandler
Step 2: Drawing the Chart
Step 3: Redrawing Charts on URL Changes
Step 4: Filtering the Table on Chart Interactions
tutorials/dashboards
Tutorial: Building Interactive Dashboards with Gramex
Introduction
Outcome
Requirements
Step 1: Working with
Step 2: Detecting Changes in the URL
Step 3: Redrawing Charts on URL Changes
tutorials/g1-dropdown
Tutorial: Dropdown Menus & Search
Introduction
Outcome
Step 0: Laying out the Scaffolding
Step 1: Making a Dropdown Menu
Step 2: Changing the URL on Selection Events
Step 3: Enabling Search
Step 4: Redrawing the Chart on URL Changes
tutorials/quickstart
Quickstart with Gramex
Introduction
Next steps
Requirements
Step 0: Create the Project
Step 1: Expose the data through a REST API
Step 2: Lay out some scaffolding
Step 3: Fill in the Data
Step 4: Adding A Chart
Step 5: Appearance and Final Touches
Troubleshooting
tutorials/sql-injection
Fixing SQL injection errors
Eliminate queryfunction
How to check for SQL injection
Manually sanitize values
Other approaches
Use argstype to convert values
Use computed SQL parameters
Use lookups or
Use SQL parameters
Use SQL parameters outside FormHandler
twitterresthandler
TwitterRESTHandler
Parallel AJAX requests
Twitter followers
Twitter GET requests
Twitter OAuth
Twitter Paths
Twitter persist
Twitter Pre-auth
Twitter search
Twitter streaming
Twitter transforms
uicomponents
UI Components
Arrow
Backgrounds
Borders
Color states
Components
Cursor styles
Custom themes
Deprecated
Divider
Effects
Gradient
Height
Install
Layouts
Letter spacing
Libraries
Line height
Overlay
Position
Ripple
Round corners
Shadow
Tail
Text alignment
Text opacity
Text sizes
Theme colors
Themes
Typography
Z-Index
uicomponents/libraries
UI Libraries
uifactory
UIFactory creates UI components
uploadhandler
UploadHandler uploads files
AJAX uploads
Overwriting uploads
Saving uploads
Transform uploads
Upload arguments
Upload deletion
Upload listing
watch
Watch files
inotify limit
Watching files
websockethandler
WebSocketHandler
Websocket chat messages
Websockets via nginx
workshop/building-ml-apps-rapidly
Building Machine Learning Apps Rapidly
A Quick Survey
Build a model to predict who'll get admitted
Build an app that predicts admission
Explore the data
IDE Tutorial
Learning more
Objective
Overview
Share feedback
Summarize Learnings
Try next steps
What if you need help?
workshop/data-portraits
Build a Data Portrait
Examples of use
Tutorial
workshop/influxdb
Visualizing Subsurface Float Movement with InfluxDB & FormHandler
Step 0: Prerequisites
Step 1: Getting the data
Step 2: Setting Up FormHandler for InfluxDB
Step 2.1: The Gramex App Specification
Step 2.2: Push Data to InfluxDB
Step 2.3: Add a Map
Step 3: Plotting the Data on the Map