{"id":13772794,"url":"https://github.com/SeasideSt/Seaside","last_synced_at":"2025-05-11T05:33:52.940Z","repository":{"id":29333248,"uuid":"32866980","full_name":"SeasideSt/Seaside","owner":"SeasideSt","description":"The framework for developing sophisticated web applications in Smalltalk.","archived":false,"fork":false,"pushed_at":"2024-10-25T14:10:51.000Z","size":14368,"stargazers_count":518,"open_issues_count":139,"forks_count":71,"subscribers_count":38,"default_branch":"master","last_synced_at":"2024-10-29T17:35:28.888Z","etag":null,"topics":["component","continuation","gemstone","pharo","pharo-smalltalk","smalltalk","webframework"],"latest_commit_sha":null,"homepage":"","language":"Smalltalk","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SeasideSt.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2015-03-25T13:42:01.000Z","updated_at":"2024-10-25T12:31:49.000Z","dependencies_parsed_at":"2023-02-13T03:31:52.015Z","dependency_job_id":"69bd04cd-2491-4f56-b922-d6d5f58b8a95","html_url":"https://github.com/SeasideSt/Seaside","commit_stats":null,"previous_names":[],"tags_count":51,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SeasideSt%2FSeaside","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SeasideSt%2FSeaside/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SeasideSt%2FSeaside/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SeasideSt%2FSeaside/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SeasideSt","download_url":"https://codeload.github.com/SeasideSt/Seaside/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225017610,"owners_count":17407801,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["component","continuation","gemstone","pharo","pharo-smalltalk","smalltalk","webframework"],"created_at":"2024-08-03T17:01:07.873Z","updated_at":"2024-11-17T08:30:28.191Z","avatar_url":"https://github.com/SeasideSt.png","language":"Smalltalk","readme":"# The framework for developing sophisticated web applications in Smalltalk.\n\nSeaside provides a layered set of abstractions over HTTP and HTML that let you build highly interactive web applications quickly, reusably and maintainably. It is based on Smalltalk, a proven and robust language that is implemented by  different vendors. Seaside includes:\n\n  * [Programmatic HTML generation](https://github.com/SeasideSt/Seaside/wiki/Generating-HTML).  A lot of markup is boilerplate: the same patterns of lists, links, forms and tables show up on page after page. Seaside has a rich API for generating HTML that lets you abstract these patterns into convenient methods rather than pasting the same sequence of tags into templates every time.\n\n  * [Callback-based request handling](https://github.com/SeasideSt/Seaside/wiki/Links%2C-Forms-and-Callbacks).  Why should you have to come up with a unique name for every link and form input on your page, only to extract them from the URL and request fields later?  Seaside automates this process by letting you associate blocks, not names, with inputs and links, so you can think about objects and methods instead of ids and strings.\n\n  * [Embedded components](https://github.com/SeasideSt/Seaside/wiki/Embedding-Subcomponents).  Stop thinking a whole page at a time; Seaside lets you build your UI as a tree of individual, stateful component objects, each encapsulating a small part of a page.  Often, these can be used over and over again, within and between applications - nearly every application, for example, needs a way to present a batched list of search results, or a table with sortable columns, and Seaside includes components for these out the box.\n\n  * [Modal session management](https://github.com/SeasideSt/Seaside/wiki/Call-and-Answer).  What if you could express a complex, multi-page workflow in a single method?  Unlike servlet models which require a separate handler for each page or request, Seaside models an entire user session as a continuous piece of code, with natural, linear control flow.  In Seaside, components can call and return to each other like subroutines; string a few of those calls together in a method, just as if you were using console I/O or opening modal dialog boxes, and you have a workflow. And yes, the back button will still work.\n\nSeaside also has good support for [CSS and Javascript](https://github.com/SeasideSt/Seaside/wiki/CSS-and-Javascript), excellent [web-based development tools](https://github.com/SeasideSt/Seaside/wiki/Development-Tools) and [debugging support](https://github.com/SeasideSt/Seaside/wiki/Debugging-Seaside-Applications), a rich [configuration and preferences](https://github.com/SeasideSt/Seaside/wiki/Configuration-and-Preferences) framework, and more.\n\n## Getting Started\n\nSeaside is composed of different parts, allowing you to only load the parts you need for your project. If you are new to Seaside, we advise you to load the default set of packages by simply following the load instructions below. If you want to load specific (or additional) parts of Seaside, check out the [list of groups and packages](https://github.com/SeasideSt/Seaside/wiki/Seaside-Load-Groups-and-Packages).\n\nWe provide instructions to get started with Seaside in [Pharo](https://pharo.org), [Gemstone](https://gemtalksystems.com/products/gs64/), [Squeak](http://www.squeak.org) or the [VAST Platform](https://www.instantiations.com/vast-platform/). See the appropriate instructions for your platform below.\n\n### Instructions for Pharo\n\n#### Load Seaside\nTo install the latest stable version of Seaside in a [Pharo](https://pharo.org) image, execute the following code:\n\n```Smalltalk\nMetacello new\n baseline:'Seaside3';\n repository: 'github://SeasideSt/Seaside:master/repository';\n load\n```\nTo install a particular version (see [releases](https://github.com/SeasideSt/Seaside/releases), e.g. 3.4.5):\n\n```Smalltalk\nMetacello new\n baseline:'Seaside3';\n repository: 'github://SeasideSt/Seaside:v3.4.5/repository';\n load\n```\n#### Launch the Welcome page\n\nIf you installed Seaside using the instructions above, the `Welcome` package was loaded and a default server adaptor was started on port 8080. Open a webbrowser on (http://localhost:8080) and you should see the Seaside Welcome page. \n\nAlso checkout the Seaside Control Panel, in the 'Library' menu of the Pharo top toolbar:\n\n\u003cimg width=\"623\" alt=\"Screenshot 2024-04-20 at 14 02 54\" src=\"https://github.com/SeasideSt/Seaside/assets/933094/79780512-e6f5-49b1-be93-b163eee13825\"\u003e\n\n\nHappy Seasiding!\n\n### Instructions for Gemstone\n\n#### Load Seaside\nTo install the latest stable version of Seaside in a [Gemstone](https://gemtalksystems.com/products/gs64/) repository, execute the following steps:\n\n1. Upgrade to the latest version of Metacello and Grease using [GsUpgrader](https://github.com/GsDevKit/gsUpgrader#gsupgrader-):\n  ```Smalltalk\n  Gofer new\n    package: 'GsUpgrader-Core';\n    url: 'http://ss3.gemtalksystems.com/ss/gsUpgrader';\n    load.\n  (Smalltalk at: #GsUpgrader) upgradeGrease.\n  ```\n\n2. Install Seaside:\n\n  Install the latest commit from the master branch:\n  ```Smalltalk\n  GsDeployer deploy: [\n    Metacello new\n      baseline: 'Seaside3';\n      repository: 'github://SeasideSt/Seaside:master/repository';\n      onLock: [:ex | ex honor];\n      load ].\n  ```\n\n  Install a particular version, e.g. 3.2.0 (see [Releases](https://github.com/SeasideSt/Seaside/releases) for a list of possible versions):\n  ```Smalltalk\n  GsDeployer deploy: [\n    Metacello new\n      baseline: 'Seaside3';\n      repository: 'github://SeasideSt/Seaside:v3.2.0/repository';\n      onLock: [:ex | ex honor];\n      load: #('Development' 'Examples' 'Zinc') ].\n  ```\n\n### Instructions for VAST\n\nSeaside is an official vendor supported framework that can be installed using VAST's feature loading tool GUI. In addition, it can be installed programmatically as shown below. VAST fork is at https://github.com/instantiations/Seaside\n\n#### Load Seaside\nTo install the latest stable version of Seaside in a [VAST Platform](https://www.instantiations.com/vast-platform/) image, execute the following code:\n\n```Smalltalk\n(EmConfigurationMap editionsFor: 'z.ST: Server Smalltalk (SST) - Seaside')\n first loadWithRequiredMaps\n```\n\n\n### Instructions for Squeak\n\nSeaside for Squeak mostly works but is unmaintained.\nIf you want to help out keeping Seaside running on Squeak, please contact us via the channels mentioned in the Community section below.\n#### Squeak \u003e= 5.2\nTo install the latest stable version of Seaside in a [Squeak](http://www.squeak.org) image you need to first install [Metacello](https://github.com/Metacello/metacello):\n```Smalltalk\nInstaller ensureRecentMetacello.\n```\nFrom there on, follow the [installation instructions for Seaside in Pharo](README.md#instructions-for-pharo).\n\n#### Squeak \u003c 5.2\nMake sure you have installed [Metacello](https://github.com/Metacello/metacello#squeak-older-than-squeak52). From there on, follow the [installation instructions for Seaside in Pharo](README.md#install-in-pharo).\n\n\n### Install older versions in Pharo or Squeak\nTo install a version older than 3.1.3, you need to load Seaside from Smalltalkhub:\n\n```Smalltalk\nMetacello new\n  configuration:'Seaside3';\n  repository: 'http://www.smalltalkhub.com/mc/Seaside/MetacelloConfigurations/main';\n  version: #stable;\n  load\n```\n\nTo install a particular version (e.g. 3.1.0):\n\n```Smalltalk\nMetacello new\n configuration:'Seaside3';\n repository: 'http://www.smalltalkhub.com/mc/Seaside/MetacelloConfigurations/main';\n version: '3.1.0';\n load\n```\n\n\n## Community\nCheck out the Add-on libraries and projects related to Seaside: https://github.com/SeasideSt/Seaside/wiki/Add-On-Libraries\n\nWe have a low traffic mailing list for questions ([sign up here](http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside)) and a (Smalltalk dialect independant) channel on the [Pharo](https://pharo.org) Discord ([sign up here](http://discord.gg/Sj2rhxn)).\n\n## Contributing\nIf you would like to contribute, please visit the [Seaside's contributors page](https://github.com/SeasideSt/Seaside/blob/master/CONTRIBUTING.md).\n\n## More\nPlease check the [Wiki](https://github.com/SeasideSt/Seaside/wiki) for more information.\n\n## Status of automated builds\n[![smalltalkCI](https://github.com/SeasideSt/Seaside/actions/workflows/ci.yml/badge.svg?branch=master)](https://github.com/SeasideSt/Seaside/actions/workflows/ci.yml) See https://github.com/SeasideSt/Seaside/actions/workflows/ci.yml\n\n[![codecov](https://codecov.io/gh/SeasideSt/Seaside/branch/master/graph/badge.svg?token=GLPOkk0Wby)](https://codecov.io/gh/SeasideSt/Seaside)\n","funding_links":[],"categories":["Web","Quick Start"],"sub_categories":["Installation"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FSeasideSt%2FSeaside","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FSeasideSt%2FSeaside","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FSeasideSt%2FSeaside/lists"}