vwf .

Symlink Architecture

Share code seamlessly between apps without npm packages or complex build configs

Project Structure with Symlinks

vicinity-app/
.envRoot environment variables
mainapp/
index.htmlSOURCEHTML entry point (SOURCE)
vite.config.jsSOURCEBuild config (SOURCE)
public/SOURCEStatic assets (SOURCE)
src/
auth/
.env→ ../.envSymlink to root .env
index.html→ ../mainapp/index.htmlSymlink to mainapp HTML
vite.config.js→ ../mainapp/vite.config.jsSymlink to mainapp config
public→ ../mainapp/publicSymlink to mainapp assets
src/
server/
Symlink
SOURCESource of truth
Folder
File

Why Symlinks?

Zero Configuration

No monorepo tools, no build config, just native filesystem

Instant Updates

Edit once, changes appear in both apps immediately

Single Source of Truth

Components, styles, and utils maintained in one place

Build Optimization

Build script resolves symlinks for production deployment

IDE Support

Full IntelliSense and navigation work perfectly

Version Control

Git tracks symlink pointers, not duplicate files

Complete Symlink Reference

Symlink LocationTargetTypePurpose
/auth/.env/.envAbsoluteEnvironment variables
/auth/index.html/mainapp/index.htmlAbsoluteHTML entry point
/auth/vite.config.js/mainapp/vite.config.jsAbsoluteBuild configuration
/auth/public../mainapp/publicRelativeStatic assets
/auth/src/shared-components../../mainapp/src/shared-componentsRelativeUI components
/auth/src/styles../../mainapp/src/stylesRelativeCSS files
/auth/src/utils../../mainapp/src/utilsRelativeUtilities & helpers

Setup Commands

Create all symlinks:

cd scripts/dev && ./setup-symlinks-complete.sh

Individual symlink example:

# Create symlink for shared components
ln -s ../../mainapp/src/shared-components auth/src/shared-components

Build resolves symlinks:

# Build script copies actual files, not symlinks
npm run build
# Result: auth/dist contains resolved files

Continue Learning

Explore more framework features