mirror of
https://github.com/storytold/artcraft.git
synced 2026-11-06 18:21:12 +00:00
Add jobs page
This commit is contained in:
1 parent
7fc423aa46
commit
65c4c5fd83
5 files changed
+230
-3
No files matched your search
@@ -5,6 +5,7 @@
|
||||
/coming-soon* /index.html 200
|
||||
/contribute* /index.html 200
|
||||
/firehose* /index.html 200
|
||||
/jobs* /index.html 200
|
||||
/leaderboard* /index.html 200
|
||||
/login* /index.html 200
|
||||
/moderation* /index.html 200
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
import { useEffect } from 'react';
|
||||
import { withRouter } from 'react-router-dom';
|
||||
import { History } from "history";
|
||||
|
||||
// A solution for scroll-to-top behavior.
|
||||
// From https://stackoverflow.com/a/54343182
|
||||
// And also https://v5.reactrouter.com/web/guides/scroll-restoration
|
||||
|
||||
interface Props {
|
||||
history : History,
|
||||
}
|
||||
|
||||
function ScrollToTop(props: Props) {
|
||||
let { history } = props;
|
||||
useEffect(() => {
|
||||
const unlisten = history.listen(() => {
|
||||
window.scrollTo(0, 0);
|
||||
});
|
||||
return () => {
|
||||
unlisten();
|
||||
}
|
||||
}, [history]);
|
||||
|
||||
return (null);
|
||||
}
|
||||
|
||||
export default withRouter(ScrollToTop);
|
||||
@@ -6,6 +6,8 @@ import { BrowserRouter, Route, Switch } from 'react-router-dom';
|
||||
import IndexPage from './pages/index/IndexPage';
|
||||
import VoxelCamPage from './pages/voxelcam/VoxelCamPage';
|
||||
import { Footer } from './common/Footer';
|
||||
import JobsPage from './pages/jobs/JobsPage';
|
||||
import ScrollToTop from '@storyteller/components/src/elements/ScrollToTop';
|
||||
|
||||
function App () {
|
||||
return (
|
||||
@@ -14,11 +16,14 @@ function App () {
|
||||
<div id="main" className="mainwrap">
|
||||
<div id="viewable">
|
||||
{/*<TopNav /> */}
|
||||
|
||||
<ScrollToTop />
|
||||
<Switch>
|
||||
<Route path="/voxelcam">
|
||||
<VoxelCamPage />
|
||||
</Route>
|
||||
<Route path="/jobs">
|
||||
<JobsPage />
|
||||
</Route>
|
||||
<Route exact={true} path="/">
|
||||
<IndexPage />
|
||||
</Route>
|
||||
|
||||
@@ -5,6 +5,7 @@ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
|
||||
import AudioSample from './AudioSample';
|
||||
import Scene from './Scene';
|
||||
import { TtsComponent } from './TtsComponent';
|
||||
import { Link } from 'react-router-dom';
|
||||
|
||||
function IndexPage () {
|
||||
return (
|
||||
@@ -389,7 +390,6 @@ function IndexPage () {
|
||||
</section>
|
||||
|
||||
<section className="section is-small">
|
||||
|
||||
<div className="columns is-vcentered">
|
||||
<div className="column is-8">
|
||||
<video src="/video/webpage-demo-1-640.mp4" autoPlay={true} playsInline={true} loop={true} muted={true}></video>
|
||||
@@ -423,7 +423,6 @@ function IndexPage () {
|
||||
and lighting — all post capture.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
|
||||
<section className="section is-small">
|
||||
@@ -589,6 +588,24 @@ function IndexPage () {
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section className="section is-small">
|
||||
<h1 className="title is-4">We're hiring!</h1>
|
||||
<h2 className="subtitle is-6">
|
||||
Fun and challenging tech. World-changing mission.
|
||||
</h2>
|
||||
<p>
|
||||
We already have incredible traction, but there's
|
||||
no better time to help us make an impact.
|
||||
</p>
|
||||
<br />
|
||||
<Link
|
||||
className="button is-fullwidth is-large is-info"
|
||||
to="/jobs"
|
||||
>
|
||||
Learn More and Apply
|
||||
</Link>
|
||||
</section>
|
||||
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,177 @@
|
||||
import React from 'react';
|
||||
import { Link } from 'react-router-dom';
|
||||
import { BackLink } from '@storyteller/components/src/elements/BackLink';
|
||||
|
||||
|
||||
function JobsPage () {
|
||||
const jobsEmail = 'jobs@storyteller.io';
|
||||
return (
|
||||
<div>
|
||||
<section className="section is-small">
|
||||
<Link to="/">
|
||||
<h1 className="title is-1">
|
||||
Storyteller
|
||||
<figure className="image is-64x64 is-inline-block">
|
||||
<img src="/logo/storyteller_kitsune_logo_3000.png" alt="FakeYou's mascot!" />
|
||||
</figure>
|
||||
</h1>
|
||||
</Link>
|
||||
<h2 className="subtitle is-3">
|
||||
Help us build the future of production
|
||||
</h2>
|
||||
</section>
|
||||
|
||||
{/*<section className="hero is-small">
|
||||
<div className="hero-body">
|
||||
<h1 className="title is-4">We're hiring!</h1>
|
||||
<p></p>
|
||||
</div>
|
||||
</section>*/}
|
||||
|
||||
<section className="hero is-small">
|
||||
<div className="hero-body">
|
||||
<div className="columns is-vcentered">
|
||||
<div className="column is-one-third">
|
||||
<div className="mascot">
|
||||
<img src="/mascot/kitsune_pose7_black_2000.webp" alt="FakeYou's mascot!" />
|
||||
</div>
|
||||
</div>
|
||||
<div className="column">
|
||||
<p className="title is-3">
|
||||
We're hiring!
|
||||
</p>
|
||||
<p className="subtitle is-5">
|
||||
</p>
|
||||
<br />
|
||||
<p>
|
||||
We're going to change the world by giving every person on this planet
|
||||
Hollywood-level live production capabilities that they can leverage
|
||||
directly from home. They won't even need a powerful computer. Deep fakes,
|
||||
streaming, and storytelling capabilities to rival Disney — accessible
|
||||
from any home PC.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section className="hero is-small">
|
||||
<div className="hero-body">
|
||||
If our mission excites you, we'd love to have you on board.
|
||||
|
||||
We're incredibly remote-friendly, but are exceedingly happy to
|
||||
interview candidates based in <em>Atlanta, GA.</em>, where we
|
||||
have a huge motion capture studio / office (directly on the Beltline!), motion capture
|
||||
actors and talent, and tons of direct, local connections to the film industry.
|
||||
|
||||
<br />
|
||||
<br />
|
||||
|
||||
Almost all of our stack is written in Rust, Python (PyTorch),
|
||||
TypeScript (React), and C/C++.
|
||||
|
||||
If you don't see a job that matches, keep a look out. We'll be posting additional
|
||||
roles in the near future, including more ML and research roles.
|
||||
|
||||
<br />
|
||||
<br />
|
||||
|
||||
To apply for any of these positions, send your resume to <code>{jobsEmail}</code>
|
||||
|
||||
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<hr />
|
||||
|
||||
<section className="hero is-small">
|
||||
<div className="hero-body">
|
||||
<div className="content">
|
||||
<h1 className="title is-3">Server Engineer</h1>
|
||||
|
||||
<p>
|
||||
Since we work so directly in the signal processing and graphics domains,
|
||||
our entire stack reflects the fact that we build for bare metal. Our web
|
||||
services are written in Rust/Actix, which is every bit as productive as Ruby.
|
||||
All of our code is shared in a Rust monorepo with builds orchestrated and
|
||||
optimized with Bazel.
|
||||
</p>
|
||||
|
||||
<h1 className="title is-5">Responsibilities</h1>
|
||||
<ul>
|
||||
<li>Build a platform that empowers our community to create and upload audio,
|
||||
video, 3D, motion, and other types of data.</li>
|
||||
<li>Build services that work together at scale to orchestrate complex workflows.</li>
|
||||
</ul>
|
||||
<h1 className="title is-5">Requirements</h1>
|
||||
<ul>
|
||||
<li>Solid grasp of the Rust programming language</li>
|
||||
<li>Solid grasp of SQL and Redis</li>
|
||||
<li>Ability to write scalable, testable code</li>
|
||||
</ul>
|
||||
<h1 className="title is-5">Nice to haves</h1>
|
||||
<ul>
|
||||
<li>Experience with any of the following: Actix, Kubernetes, Python, GCP</li>
|
||||
<li>Full stack (TypeScript/React) </li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<hr />
|
||||
|
||||
<section className="hero is-small">
|
||||
<div className="hero-body">
|
||||
<div className="content">
|
||||
<h1 className="title is-3">Unreal Engine Engineer</h1>
|
||||
|
||||
<p>
|
||||
One of the pillars of the platform we're building is rich volumetric
|
||||
and motion capture, composited into 3D worlds. Our community will
|
||||
create all sorts of incredible content, and you'll have a hand in
|
||||
directly enabling that.
|
||||
(We won't stop until our community can surpass Disney!)
|
||||
</p>
|
||||
|
||||
<h1 className="title is-5">Responsibilities</h1>
|
||||
<ul>
|
||||
<li>Map motion capture data to skeletal rigs in real time, improving collision
|
||||
with props and other actors</li>
|
||||
<li>Dynamically load community-provided character models, props, maps, and more</li>
|
||||
</ul>
|
||||
<h1 className="title is-5">Requirements</h1>
|
||||
<ul>
|
||||
<li>Strong grasp of Unreal Engine programming in C++</li>
|
||||
<li>Strong understanding of animation and retargeting</li>
|
||||
</ul>
|
||||
<h1 className="title is-5">Nice to haves</h1>
|
||||
<ul>
|
||||
<li>Cross-platform development for Windows, Mac, and Linux</li>
|
||||
<li>Experience with networking</li>
|
||||
<li>Experience with Rust</li>
|
||||
<li>Experience with spatial computing, photogrammetry, etc.</li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section className="hero is-small">
|
||||
<div className="hero-body">
|
||||
<div className="content">
|
||||
Again, that email is <code>{jobsEmail}</code>. You made it this far. Send us your resume!
|
||||
<br />
|
||||
<br />
|
||||
<BackLink link="/" />
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default JobsPage;
|
||||
Reference in new issue
Block a user